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

发布网友 发布时间:2022-04-25 20:43

我来回答

1个回答

热心网友 时间:2022-06-17 06:15

C语言里的gets()函数功能是从输入缓存中读取多个字符,遇到回车符时,结束输入。
当使用gets()函数之前有过数据输入,并且,操作者输入了回车确认,这个回车符没有被清理,被保存在输入缓存中时,gets()会读到这个字符,结束读字符操作。因此,从用户表面上看,gets()没有起作用,跳过了。
解决办法:
方法一、在gets()前加fflush(stdin);
//强行清除缓存中的数据(windows下可行)
方法二、根据程序代码,确定前面是否有输入语句,如果有,则增加一个getchar()命令,然后再调用
gets()命令。
方法三、检查输入结果,如果得到的字符串是空串,则继续读入,如:
char
str[100]={0};
do
{
gets(str);
}
while(
!str[0]
);

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com