回 帖 发 新 帖 刷新版面

主题:for循环中使用gets()出问题了

#include "stdafx.h"
#include <iostream>
#include "string.h"
using namespace std;

struct student
{
   int num;
   char name[10];
};
int main(int argc, char* argv[])
{
   struct student stud[3];
   for(int i = 0; i < 3; i++)
   {    
      scanf("%d", &(stud[i].num));
      gets(stud[i].name);
    }
    return 0;
}

我运行这个程序输入时出错,按理说应该要输入3组数据,但是我还没完成输入它就运行结束了。比如输入“ 1 回车 s 回车 2 回车  ”这时它就自己往下运行了,而不是等我再继续进行剩下的输入操作。这是为什么啊???都没想到会遇到这样的问题哦,真是奇怪了。
不过当我注释掉第一个输入语句 scanf("%d", &(stud[i].num));后输入又是正常的,可能是我对gets()这个函数的哪些要点没搞清吧,向大家请教哦

回复列表 (共6个回复)

沙发

gets前 加一行语句
fflush(stdin);

板凳


哈哈,果然哈!!!真是谢谢了哦!!!

3 楼

[quote]gets前 加一行语句
fflush(stdin);[/quote]
这是为什么啊?能否解释一下!

4 楼

我查过资料,好象说fflush(stdin);是起到清空输入缓冲区的作用。

5 楼

[quote]我查过资料,好象说fflush(stdin);是起到清空输入缓冲区的作用。
[/quote]
没错 凡是输入字符变量的时候 一般都要用到它

6 楼

很好!!!

我来回复

您尚未登录,请登录后再回复。点此登录或注册