我这C语言错哪里?

来源:百度知道 编辑:UC知道 时间:2024/06/30 09:49:51
假定学生的成绩登记表有学号、姓名、成绩三项内容,编写一个成绩登记程序,用户可以从终端输入若干个学生的成绩,保存后输出。
这是我的代码:
#include<stdio.h>
struct student
{
int num,score;
char name[20];
};
void main()
{
struct student stu[20];
int h,x
for(h=0;h<20;h++)
{
printf("please enter num");
scanf("%d",stu[h].num);
fflush(stdin);
printf("please enter name");
scanf("%d",stu[h].name);
fflush(stdin);
printf("please enter score");
scanf("%d",stu[h].score);
fflush(stdin);
}
for(x=0;x<20;x++)
{
printf("%d,%c,%d",stu[h].num,stu[h].name,stu[h].score);
}
}
没有warning,error
但是总是出现Null pointer assignment这句
怎么回事?请大家帮忙下,谢谢!
我按你们说的改了,还是输出的不是我输入的啊,怎么回事?还是不对啊!,已经按你们改的了,还是输出的都是乱码,怎么回事?

1、scanf第二个参数前全部加& (这里有三处)
2、两处name有关的 %s代替%c读入字符串 (这里有两处,包括一个scanf和一个printf)
3、x循环无意义 都改h好了

#include<stdio.h>
struct student
{
int num,score;
char name[20];
};
void main()
{
struct student stu[20];
int h;
for(h=0;h<2;h++)
{
printf("please enter num\n");
scanf("%d",&stu[h].num);
fflush(stdin);
printf("please enter name\n");
scanf("%s",&stu[h].name);
fflush(stdin);
printf("please enter score\n");
scanf("%d",&stu[h].score);
fflush(stdin);
}
for(h=0;h<2;h++)
{
printf("%d,%s,%d\n",stu[h].num,stu[h].name,stu[h].score);
}
}

1.struct student 定义的name是char类型,到了scanf却是"%d"

2.Scanf需要加“&”

3.for(x=0;x<20;x++)
{
printf("%d,%c,%d",stu[h].num,stu[h].name,stu[h].score);
}

这一