关于C语言里的gets()问题,为什么名字输入被跳过?

2020-06-13 科技 92阅读
  • C语言里的gets()函数功能是从输入缓存中读取多个字符,遇到回车符时,结束输入。

  • 当使用gets()函数之前有过数据输入,并且,操作者输入了回车确认,这个回车符没有被清理,被保存在输入缓存中时,gets()会读到这个字符,结束读字符操作。因此,从用户表面上看,gets()没有起作用,跳过了。

  • 解决办法:

    • 方法一、在gets()前加fflush(stdin); //强行清除缓存中的数据(windows下可行)

    • 方法二、根据程序代码,确定前面是否有输入语句,如果有,则增加一个getchar()命令,然后再调用 gets()命令。

    • 方法三、检查输入结果,如果得到的字符串是空串,则继续读入,如:

      • char str[100]={0};

      • do {

      • gets(str);

      • } while( !str[0] );

声明:你问我答网所有作品(图文、音视频)均由用户自行上传分享,仅供网友学习交流。若您的权利被侵害,请联系fangmu6661024@163.com