我试图让程序打印出“确定”,只要我输入“y”作为选择在最后,但它不是循环,它只是打印出“确定”,并结束程序,即使我输入一个“y”在最后。请帮助。
#include <stdio.h>
int main()
{
char c = 'y';
while (c == 'y')
{
printf_s("OK\n");
scanf_s("%c", &c);
if (c != 'y')
{
break;
}
}
return 0;
}
5条答案
按热度按时间33qvvth11#
在第一次迭代中,当你按下Enter键时,一个换行符
\n
和y
沿着被传递到输入端。在第二次迭代中,scanf_s
读取\n
。到
%c
说明符之前的空格可以占用任意数量的空白字符。wdebmtf22#
按如下所示更改
scanf_s
行这个额外的参数指定了
c
参数的大小。普通的老版本scanf
不需要这个参数,但是以_s
结尾的版本需要此外,带有
break
语句的if
块也是不必要的,因为while
循环上的条件实际上也做了同样的事情。x4shl7ld3#
好的,我用scanf代替了scanf_s,这样就解决了这个问题,谢谢大家。
4szc88ey4#
你扫描错了
如果你这样使用,你会看到它在工作。
7uzetpgm5#
在
%c
前放置一个空格以跳过空格。