#include <stdio.h>
main()
{
typedef struct{
char *name;
int age;
}person[5];
int i;
for (i=0;i<5;i++){
printf ("name:");
scanf("%s",person[i].name);
printf("\nage:");
scanf("%d",&person[i].age);}
for (i=0;i<5;i++){
printf ("person:%d",i);
printf ("name:%s",person[i].name);
printf ("age:%d",person[i].age);
}
}
这是我的示例程序。但是在编译时我一直得到错误“在第10,12,16和17行之前的人的预期表达?我做错了什么?
答案 0 :(得分:5)
要修复语法错误,请删除typedef
关键字(您尝试声明变量,而不是类型)。
更好的是,改为:
typedef struct{
char *name;
int age;} Person;
Person person[5];
另外,以下是错误的:
scanf("%s",person[i].name);
您需要先为person[i].name
分配内存(例如,使用malloc()
)。
最后,以下行中的%s
格式说明符不正确:
printf ("age:%s",person[i].age);
答案 1 :(得分:2)
person
是一种类型,而不是一种对象。您不能“scanf()
进入类型:person
”。
我只是删除了typedef,只是将struct定义留在main的主体之外;并在
中创建一个对象struct person { /* ... */ };
int main(void) {
struct person person[5];
/* ... */
return 0;
}