在上面的代码中,我无法输入学生的姓名,因为它给出了空指针赋值错误。如何解决这个问题,我可以输入卷号,它会很好地显示结果
#include<stdio.h>
#include<conio.h>
union student
{
int roll_no;
char name[10];
}s1,*a;
void main()
{
clrscr();
*a=s1;
printf("Enter roll_no : ");
scanf("%d",a->roll_no);
clrscr();
printf("Roll No : %d",a->roll_no);
getch();
clrscr();
printf("Enter name : ");
scanf("%s",a->name);
clrscr();
printf("Name : %s",a->name);
getch();
}
最佳答案
*a=s1;
将其更改为 -
a=&s1;
还有这个声明-
scanf("%d",a->roll_no); // %d expects address of int variable
应该是-
scanf("%d",&a->roll_no);
注意- - void main()
-> int main(void)
或int main(int argc, char **argv)
关于c - 空指针赋值错误 union ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33253435/