C语言结构体内容输入错误

#include<stdio.h>typedefstructstudent{charname[10];intnum;}stu,*stud;intmain(){stua;s... #include<stdio.h>
typedef struct student
{
char name[10];
int num;
}stu,*stud;
int main()
{
stu a;
stud b;
scanf("%s",&a.name);
scanf("%d",&a.num);
scanf("%s",b->name); //为什么输入这一行会出错?
scanf("%d",&(b->num));
return 0;
}
展开
 我来答
金色潜鸟
推荐于2016-01-06 · TA获得超过3.2万个赞
知道大有可为答主
回答量:1.3万
采纳率:89%
帮助的人:6672万
展开全部
scanf("%s",b->name); //为什么输入这一行会出错?
因为 b 是指向结构的指针,它尚无存放数据的单元,所以出错。
你,要么给它动态分配单元,要么让它指向某个同类结构,然后使用就可以了。
例如:
b = &a;
scanf("%s",b->name);
printf("%s\n", a.name);
或 这样 输出检查 printf("%s %s\n", a.name, b->name);
就没问题了。
追问
我在stud b;后面加了b=(stud)malloc(sizeof(std));就可以了,那?a为什么不需要用malloc申请空间?
追答
b=(stud) malloc (sizeof(struct student ));  // 注意拼写。
a 是 stu a;
a 等价: struct student a; //结构变量 已有内存
b 等价: struct student *b; //结构指针
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式