首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

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

2012-09-06 
小弟刚学C不久,碰到一个难解的问题,干扰我几天了!紧急!!!!!跪求大牛!for(i0i10i++){printf(请输入学

小弟刚学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);
……

热点排行