十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
你前面有一个 a=getchar();,输入完a的字符之后一按回车,a就被赋了你输入的那个字符,剩一个回车字符,就传到Scanf函数里去了,看起来就是被跳过了
公司主营业务:成都网站设计、成都做网站、移动网站开发等业务。帮助企业客户真正实现互联网宣传,提高企业的竞争能力。创新互联是一支青春激扬、勤奋敬业、活力青春激扬、勤奋敬业、活力澎湃、和谐高效的团队。公司秉承以“开放、自由、严谨、自律”为核心的企业文化,感谢他们对我们的高要求,感谢他们从不同领域给我们带来的挑战,让我们激情的团队有机会用头脑与智慧不断的给客户带来惊喜。创新互联推出汉阳免费做网站回馈大家。
C语言里的gets()函数功能是从输入缓存中读取多个字符,遇到回车符时,结束输入。
当使用gets()函数之前有过数据输入,并且,操作者输入了回车确认,这个回车符没有被清理,被保存在输入缓存中时,gets()会读到这个字符,结束读字符操作。因此,从用户表面上看,gets()没有起作用,跳过了。
解决办法:
方法一、在gets()前加fflush(stdin);
//强行清除缓存中的数据(windows下可行)
方法二、根据程序代码,确定前面是否有输入语句,如果有,则增加一个getchar()命令,然后再调用
gets()命令。
方法三、检查输入结果,如果得到的字符串是空串,则继续读入,如:
char
str[100]={0};
do
{
gets(str);
}
while(
!str[0]
);
因为scanf在输入数只时,碰到非数值时就停下来了,回车、空格等等都是非数值。
代码中要求输入两个数值,此时在第二个数值的后面,一定会有其他非数值字符,如回车符,而接下来输入字符时就将那个回车符作为了输入的字符了