新来的。我在论坛里到处找,似乎找不到我需要的帮助。
我想做的很简单。我在头中声明了一个结构,然后创建了这个结构的数组。
然后我调用一个函数,传入一个指向这个结构数组的指针,但是在函数中我得到错误:
错误:在非结构或联合中请求成员“XXXXX”
我相信这个错误是我如何将我的结构数组传递到函数中的,但是我似乎无法找到正确的方法。
我的标题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的指针数组。这意味着一致符号使用.而不是->

07-24 18:59
查看更多