我试图让程序打印出“OK”,只要我在最后输入'y'作为选择,但它不是循环,只是打印出“OK”并结束程序即使我在最后输入'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;
}
答案 0 :(得分:4)
在按 Enter 键的第一次迭代时,换行符\n
将与y
一起传递给输入。在第二次迭代scanf_s
上读取\n
。
改变
scanf_s("%c", &c);
到
scanf_s(" %c", &c);
^Notice the space before %c
%c
说明符之前的空格可以使用任意数量的空白字符。
答案 1 :(得分:2)
按如下所示更改scanf_s
行
scanf_s("%c", &c, 1);
此额外参数指定c
参数的大小。普通旧scanf
不需要此参数,但以_s
结尾的版本不需要
同样,带有if
语句的break
块是不必要的,因为while
循环上的条件有效地执行相同的操作。它可以写成如下
while (c == 'y')
{
printf_s("OK\n");
scanf_s("%c", &c, 1);
}
答案 2 :(得分:0)
你错了scanf
如果你这样使用,你会看到它正在运作..
#include <stdio.h>
int main()
{
int c = 1;
while (c == 1)
{
printf_s("OK\n");
scanf_s("%d", &c);
if (c != 1)
{
printf_s("hello\n");
continue;
}
}
return 0;
}
答案 3 :(得分:0)
好的我使用了scanf而不是scanf_s,这解决了这个问题,谢谢大家。
答案 4 :(得分:-1)
在%c
之前加一个空格以跳过空格。