3.c中关于程序中的gets()语句被跳过,不接受键盘输入的原因
2018-03-08 16:09
375 查看
C语言里的gets()函数功能是从输入缓存中读取多个字符,遇到回车符时,结束输入。
当使用gets()函数之前有过数据输入,并且,操作者输入了回车确认,这个回车符没有被清理,被保存在输入缓存中时,gets()会读到这个字符,结束读字符操作。因此,从用户表面上看,gets()没有起作用,跳过了。
解决办法:方法一、在gets()前加fflush(stdin); //强行清除缓存中的数据(windows下可行)
方法二、根据程序代码,确定前面是否有输入语句,如果有,则增加一个getchar()命令,然后再调用 gets()命令。
方法三、检查输入结果,如果得到的字符串是空串,则继续读入,如:char str[100]={0};
do {
gets(str);
} while( !str[0] );
当使用gets()函数之前有过数据输入,并且,操作者输入了回车确认,这个回车符没有被清理,被保存在输入缓存中时,gets()会读到这个字符,结束读字符操作。因此,从用户表面上看,gets()没有起作用,跳过了。
解决办法:方法一、在gets()前加fflush(stdin); //强行清除缓存中的数据(windows下可行)
方法二、根据程序代码,确定前面是否有输入语句,如果有,则增加一个getchar()命令,然后再调用 gets()命令。
方法三、检查输入结果,如果得到的字符串是空串,则继续读入,如:char str[100]={0};
do {
gets(str);
} while( !str[0] );
相关文章推荐
- 关于scanf接受键盘输入的细节
- 关于程序中跳过scanf()或者gets()的问题
- 编写程序,接受从键盘3输入的10个十进制数字,输入中遇见回车符则停止输入,各个数经过BCD码处理,以16进制显示
- 关于getchar函数何时返回,当程序请求键盘输入时
- 编程作业175页第4题 程序允许用户在键盘依次输入若干个数字(使用断言语句)
- 关于C++程序键盘输入文件结束符
- 关于fgets从键盘读取,直接跳过键盘输入的问题
- 关于手机端属于框获取焦点调出的输入键盘有前往按钮的方法
- VC关于键盘输入(转)
- 从键盘输入字符串并输出该字符串(汇编程序—I/O
- 编写程序从键盘上输入一些字母和数字,统计显示其中的数字字符的个数和非数字字符个数。
- 3、编写一个程序,从键盘上输入学生的三门课程成绩,求总成绩和平均成绩。
- 关于输入流(从硬盘文件输入到程序中)
- 写出一个程序,接受一个有字母和数字以及空格组成的字符串,和一个字符,然后输出输入字符串中含有该字符的个数。不区分大小写。
- Win10 10074预览版键盘输入延迟是什么原因如何解决
- C语言编程在Xcode中Scanf 输入跳过以及清空键盘缓冲区总结
- 关于新浪博客输入javascript语句会自动屏蔽的解决办法
- 关于SpringMVC或Struts2接受参数接收不到的原因
- 关于“对驱动型键盘记录程序Klog的修改”的补充
- 第二章作业题51.3(编写一个程序从键盘输入10个数,要求输出其中最小的。)