C 程序没有循环
我试图让程序打印出“OK”,只要我在末尾输入“y”作为选项,但它不是循环,它只是打印出“OK”并结束程序,即使我在末尾输入了“y”。请帮忙C 程序没有循环,c,while-loop,choice,C,While Loop,Choice,我试图让程序打印出“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') {
#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;
}
#包括
int main()
{
字符c='y';
而(c='y')
{
printf_s(“OK\n”);
scanf_s(“%c”和“&c”);
如果(c!=“y”)
{
打破
}
}
返回0;
}
在第一次迭代中,按Enter键时,一个换行符\n
与y
一起传递到输入。在第二次迭代时,scanf\u s读取\n
。
改变
scanf_s("%c", &c);
到
%c
说明符前面的空格可以使用任意数量的空白字符。在第一次迭代中,当您按Enter键时,一个换行字符\n
将与y
一起传递到输入。在第二次迭代时,scanf\u s读取\n
。
改变
scanf_s("%c", &c);
到
%c
说明符前面的空格可以使用任意数量的空格字符。在%c
前面放置空格可以跳过空格。在%c
前面放置空格可以跳过空格。更改扫描行,如下所示
scanf_s("%c", &c, 1);
while (c == 'y')
{
printf_s("OK\n");
scanf_s("%c", &c, 1);
}
此额外参数指定c
参数的大小。纯旧的scanf
不需要此参数,但以\u s
结尾的版本需要此参数
另外,带有break
语句的if
块是不必要的,因为while
循环上的条件有效地执行相同的操作。可以这样写
scanf_s("%c", &c, 1);
while (c == 'y')
{
printf_s("OK\n");
scanf_s("%c", &c, 1);
}
更改scanf_s
行,如下所示
scanf_s("%c", &c, 1);
while (c == 'y')
{
printf_s("OK\n");
scanf_s("%c", &c, 1);
}
此额外参数指定c
参数的大小。纯旧的scanf
不需要此参数,但以\u s
结尾的版本需要此参数
另外,带有break
语句的if
块是不必要的,因为while
循环上的条件有效地执行相同的操作。可以这样写
scanf_s("%c", &c, 1);
while (c == 'y')
{
printf_s("OK\n");
scanf_s("%c", &c, 1);
}
你对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;
}
#包括
int main()
{
int c=1;
而(c==1)
{
printf_s(“OK\n”);
scanf_s(“%d”和“&c”);
如果(c!=1)
{
printf_s(“hello\n”);
持续
}
}
返回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;
}
#包括
int main()
{
int c=1;
而(c==1)
{
printf_s(“OK\n”);
scanf_s(“%d”和“&c”);
如果(c!=1)
{
printf_s(“hello\n”);
持续
}
}
返回0;
}
好的,我用scanf代替scanf\s,解决了问题,谢谢大家。好的,我用scanf代替scanf\s,解决了问题,谢谢大家。在scanfy之前,您正在使用windows系统。您可能需要检查。确定fflush(stdin)当我希望保持循环运行时,您在扫描之前使用windows系统,您可能需要检查。确定fflush(stdin)当我想保持循环运行时,这一点很有帮助。scanf\u s
方法要求所有存储位置后面都有一个显式大小。scanf\u s
方法要求所有存储位置后面都有一个显式大小。他对scanf没有“错”。你可以扫描一个角色。他在用scanf_s扫描一个角色。将其更改为int不能帮助他解决扫描没有必要的第三个参数的问题。他不是“你错在scanf上了”,我说如果他使用%c编译器也将新行作为字符读取,那么他是在错误地使用它。这就是他使用错误的原因!然后给你的答案加上更多的解释,而不是简单地说“错”。他对scanf没有“错”。你可以扫描一个角色。他在用scanf_s扫描一个角色。将其更改为int不能帮助他解决扫描没有必要的第三个参数的问题。他不是“你错在scanf上了”,我说如果他使用%c编译器也将新行作为字符读取,那么他是在错误地使用它。这就是他使用错误的原因!然后对你的答案添加更多解释,而不是简单地说“错”。如果你想继续使用scanf_s
请参阅我的答案,因为它纠正了htis API的使用如果你想继续使用scanf_s
请参阅我的答案,因为它纠正了htis API的使用