c语言 这里gets_s读取字符,输入A,能输出a[0]为A,而输入AB时,a[0]没有任何输出,什么原因?

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

我来回答

2个回答

热心网友 时间:2023-10-15 01:39

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

} while( !str[0] );

热心网友 时间:2023-10-15 01:40

“AB”的话算是字符串了,你把“%c”改为“%s”试试

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