我一直在CS50
工作,我正在做struct
,允许用户输入并保存在数组中。然而,我得到
数组元素类型不完整
下面是我正在编写的程序:
Phonebook.c
#include<stdio.h>
#include<string.h>
#include<cs50.h>
#include<ctype.h>
#define MAX 4
typedef struct
{
char name[20];
char number[8];
}person;
int main ()
{
struct person ppl[MAX];
int i;
for(i = 0;i < MAX; i++ )
{
printf("nEnter details of user %dnn", i+1);
printf("Enter name: ");
scanf("%s", ppl[i].name);
printf("Enter phone number: ");
scanf("%s", ppl[i].number);
}
printf("n");
printf("NametPhone Numbern");
for(i = 0; i < MAX; i++)
{
printf("%st%sn", ppl[i].name, ppl[i].number);
}
return 0;
}
错误加
clang -ggdb3 -O0 -std=c11 -Wall -Werror -Wextra -Wno-sign-compare -Wno-unused-parameter -Wno-unused-variable -Wshadow Phonebook.c -lcrypt -lcs50 -lm -o Phonebook
Phonebook.c:15:22: error: array has incomplete element type 'struct person'
struct person ppl[MAX];
^
Phonebook.c:15:12: note: forward declaration of 'struct person'
struct person ppl[MAX];
^
1 error generated.
make: *** [<builtin>: Phonebook] Error 1
如何解决这个问题?请给我点化一下。
person
是一个未命名结构体的类型定义。struct person
不存在
省略struct
前缀:person ppl[MAX];
或者为未命名的结构体指定一个名称:typedef struct people
(此时,如果您希望将结构体引用为struct people
而不是people
,则可以删除类型定义)