求教各位对结构体输入赋值问题
#include<stdio.h>struct student
{
long stdnum;
short age;
char name[20];
char sex;
float score[4];
float averscore;
};
void main()
{
int i,j;
struct student stu[3];
for(i=0;i<3;i++)
{
printf("Name:\n");
gets(stu[i].name);
puts(stu[i].name);//能输出输入的字符串
printf("student num age sex\n");
scanf("%ld %d %s",&stu[i].stdnum,&stu[i].age,&stu[i].sex);
puts(stu[i].name);//输出空
printf("score:\n");
for(j=0;j<4;j++)
{
scanf("%f",&stu[i].score[j]);
}
}
}
第一个puts能输出输入的字符串,第二个puts输出空,这是怎么回事?
还有就是循环到第二次的时候,直接 printf("Name:\n")后,没从键盘输入值就执行scanf("%ld %d %s",&stu[i].stdnum,&stu[i].age,&stu[i].sex)了。
效果如下:
Name:
LILI//输入
LILI//puts出来结果
student num age sex
24 18 M//输入
//puts 空
score:
60 70 80 90
Name:
//puts输出
student num age sex
后面就不写出了
为什么会这样呢。