c - C 中的结构数组,告诉我我的成员不在结构或 union 中

标签 c arrays function pointers struct

这里是 C 新手。我一直在浏览论坛,似乎无法获得我需要的帮助。 我想做的很简单。我在我的 header 中声明了一个结构,然后我创建了这个结构的数组。

然后我调用一个函数,传入一个指向这个结构数组的指针,但是在函数中我得到了错误:

error: request for member 'XXXXX' in something not a structure or union

我相信这个错误是我将结构数组传递给函数的方式,但我似乎无法找出正确的方法。

我的header.h如下:

#ifndef HEADER_H_INCLUDED
#define HEADER_H_INCLUDED

typedef struct PhoneNumber
{
    char name[40];
    unsigned char number[10];

} PhoneNumber;


#endif // HEADER_H_INCLUDED

我还没有真正实现我的显示功能,我的代码如下:

#include <stdio.h>
#include <stdlib.h>
#include "header.h"

int main()
{
struct PhoneNumber PhoneNumbers[10];

//input phone number
inputPhoneNumbers(&PhoneNumbers);

//display PhoneNumber
displayPhoneNumbers(&PhoneNumbers);

return EXIT_SUCCESS;
}



int inputPhoneNumbers(int size, PhoneNumber *details[size])
{
    size = 0;
    printf("Enter a name\n");
    scanf("%s\n", &details[size].name);
    printf("Enter %s's number\n", details[size]->name);
    scanf("%s\n", &details[size].number);



   return EXIT_SUCCESS;
}


int displayPhoneNumbers(PhoneNumber *number)
{
    printf("%s\n",number->name);
    printf(number->number);

}

有人能指出我正确的方向吗?

干杯!

最佳答案

符号需要保持一致。你有:

scanf("%s\n", &details[size].name);
printf("Enter %s's number\n", details[size]->name);
scanf("%s\n", &details[size].number);

我认为应该是:

scanf("%s\n", details[size]->name);
printf("Enter %s's number\n", details[size]->name);
scanf("%s\n", details[size]->number);

但是,还有许多其他问题,我仍在努力解决。


这是单个文件 SSCCE ( Short, Self-Contained, Correct Example )。

#include <stdio.h>
#include <stdlib.h>

typedef struct PhoneNumber
{
    char name[40];
    unsigned char number[10];
} PhoneNumber;

int inputPhoneNumbers(int size, PhoneNumber details[size]);
void displayPhoneNumbers(PhoneNumber *number);

int main(void)
{
    struct PhoneNumber PhoneNumbers[10];

    inputPhoneNumbers(10, PhoneNumbers);

    displayPhoneNumbers(PhoneNumbers);

    return EXIT_SUCCESS;
}

int inputPhoneNumbers(int size, PhoneNumber details[size])
{
    size = 0;
    printf("Enter a name\n");
    scanf("%s\n", details[size].name);
    printf("Enter %s's number\n", details[size].name);
    scanf("%s\n", details[size].number);

    return EXIT_SUCCESS;
}

void displayPhoneNumbers(PhoneNumber *number)
{
    printf("%s\n", number->name);
    printf("%s\n", number->number);
}

这里的主要变化是 inputPhoneNumbers() 函数的类型变化;您想要传递一个 PhoneNumber 数组,而不是一个指向 PhoneNumber 的指针数组。这意味着一致的表示法使用 . 而不是 ->.

关于c - C 中的结构数组,告诉我我的成员不在结构或 union 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15593784/

相关文章:

c++ - 在磁盘上实现的 FIFO 队列(或堆栈),而不是 ram(最好在 C++ 中)

c - 尝试解析文档并存储节点信息,不知道为什么会出现段错误

javascript - 对事件函数中 if/else 的使用进行故障排除

postgresql - 如何使用自定义枚举输入调用此 Postgres 函数?

c - 返回 char * 值

创建新流程并期待输出

ios - 在 Swift 中将 Bool 从一个类返回到另一个类

JavaScript 数组垫片与 for ... in

javascript - 如何获取数组中两个相同元素的索引元素?

c - C语言可以显示数组吗?