
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;
} 展开
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;
} 展开
1个回答
展开全部
scanf("%s",b->name); //为什么输入这一行会出错?
因为 b 是指向结构的指针,它尚无存放数据的单元,所以出错。
你,要么给它动态分配单元,要么让它指向某个同类结构,然后使用就可以了。
例如:
b = &a;
scanf("%s",b->name);
printf("%s\n", a.name);
或 这样 输出检查 printf("%s %s\n", a.name, 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; //结构指针
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询