## Code to read general information ##
#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
typedef struct{
char *name =(char*)malloc(20);
int age;
int id;
}info;
main()
{
info a;
printf("Enter Name :");
scanf(" %[^\n]",a.name);
a.age=19;
a.id=11700055;
printf("Name :%s\nAge :%d\nId :%d\nSize of info
:%d\n",a.name,a.age,a.id,sizeof(a));
return 0;
}
https://i.stack.imgur.com/WoA0T.png
这段代码有什么问题? 它显示错误,我不明白信息没有名为'name'的成员?
它还表示姓名,年龄,身份证不是信息的成员。
答案 0 :(得分:4)
在struct struct声明中,您正在分配不允许的内存。
如果你需要里面的数组
typedef struct{
char name[20];
int age;
int id;
}info;
或者你也可以这样做
#define MAXLEN 20
typedef struct{
char* name;
int age;
int id;
}info;
info p;
p.name = malloc(MAXLEN);
if(!p.name){ perror("malloc");exit(1);}
...
应该是int main(void)
而不是main()
。