#include"stdio.h"
main()
{struct st {
int nu ;
char *name ;//野指针
}a[3];
int i ;
for(i=0;i<3;i++)
scanf("%d%s",&a[i].nu,a[i].name);
for(i=0;i<3;i++)
printf("%3d% s\n",a[i].nu,a[i].name);
}
C语言是比较低级的语言,没有字符串概念,只有字符数组,不能自动分配空间,要存放数据,必须预先定义存储空间的大小!
改为:char name[100]; 一定要常量
scanf("%d%s",&a[i].nu,a[i].name); 就没问题了!
估计你曾经看过这种定义法:char *name=“abcd”;这种也是字符数组初始化固定的空间4个,所以你要记住,初始化一定要预定存放的空间大小!
还有你想达到高级语言的效果,你也可以用
a[i].name = (char *)malloc(100); /这里也要常量/
scanf("%d%s",&a[i].nu,a[i].name); 就没问题了!