小弟刚学C不久,碰到一个难解的有关问题,干扰小弟我几天了!紧急跪求大牛

小弟刚学C不久,碰到一个难解的问题,干扰我几天了!紧急!!!!!跪求大牛!
for(i=0;i<10;i++)
{
printf("请输入学生信息:\n");
scanf("%d%s%c%d%f%f%f%f%f",&stu[i].num,&stu[i].name,&stu[i].sex,&stu[i].age,&stu[i].score.chi,&stu[i].score.math,&stu[i].score.eng,&stu[i].score.phy,&stu[i].score.chem);
}
  printf(“hello,world!”);
这个for循环,我是想用来输入十个学生信息的。
当我输入完一组信息后,按回车想输入第二组。结果出现这种情况:

请输入学生信息:
0021 liqiang m 20 85 78 89 56 78(按回车准备输入第二组,结果直接这样了。)
请输入学生信息:
请输入学生信息:
请输入学生信息:
请输入学生信息:
请输入学生信息:
请输入学生信息:
请输入学生信息:
请输入学生信息:
请输入学生信息:
请输入学生信息:
“hello,world!”不知道怎么回事,后面几次循环程序自动运行printf我没输入数据直接跳过结束循环了

------解决方案--------------------
探讨

试试在printf("请输入学生信息:\n");之前加一个fflush函数。

------解决方案--------------------
探讨

试试在printf("请输入学生信息:\n");之前加一个fflush函数。

------解决方案--------------------
探讨

试试在printf("请输入学生信息:\n");之前加一个fflush函数。

------解决方案--------------------
+1
探讨
不建议使用这样的格式,可读性很差!
良好的编程习惯,可以帮你解决好多问题
scanf("%d",&amp;amp.stu[i].num)
scanf("%s",&amp;amp.stu[i].name)
scanf("%c",&amp;amp.stu[i].sex)
...

------解决方案--------------------
你这个程序我完整的在VC 6.0上测试了一下。确实出现你说的问题,原因是scanf函数的输入格式不对。源码如下:
#include "stdafx.h"

typedef struct{
float chi;
float math;
float eng;
float phy;
float chem;
}score_1;


typedef struct{
int num;
char name[20];
char sex;
int age;
score_1 score;
}student;
student stu[10];

int main(int argc, char* argv[])
{
int i;
for(i=0;i<3;i++) //10个数据太多,我在这给改成了3个,偷点懒
{
printf("请输入学生信息:\n");
scanf("%d,%s,%c,%d,%f,%f,%f,%f,%f",&stu[i].num,&stu[i].name,&stu[i].sex,&stu[i].age,&stu[i].score.chi,&stu[i].score.math,&stu[i].score.eng,&stu[i].score.phy,&stu[i].score.chem);
}
 
printf("Hello World!\n");
return 0;
}


数据输入如下:
0021,liqiang,m,20,85,78,89,56,78(回车)......


------解决方案--------------------
在printf("请输入学生信息:\n") 后加入 fflush(stdin)清空输入缓冲,有些是编译器的问题..
探讨

引用:

试试在printf("请输入学生信息:\n");之前加一个fflush函数。

应该在 printf("请输入学生信息:\n") 后加入 fflush 函数
楼主这种情况 可能是\n 被scanf 接收了

for( i=0;i<10;i++)
{
printf("请输入学生信息:\n") ;
fflush(0);
……