我想要完成的是提示用户他们想再次运行该程序的问题。他们输入 y 或 n。如果是,它会重新运行程序。如果否,它会停止程序。除了这两个之外的任何其他内容都会提示错误并再次提出问题。我习惯了字符串并不复杂的 C#,但在 C 中,我猜从技术上讲没有字符串,所以我们必须使用 char 数组或 char 指针。我都试过了,没有一个能按我想要的方式工作,但我可能是问题所在。这就是我所拥有的。
char answer[1] = "a";
while (strcmp(answer, "y") != 0 || strcmp(answer, "n") != 0)
{
printf ("\n\nWould you like to run the program again? Type y or n. Then, hit Enter.");
scanf ("%c", answer);
if (strcmp(answer, "y") == 0)
{
main();
}
else if (strcmp(answer, "n") == 0)
{
continue;
}
else
{
printf ("\nERROR: Invalid input was provided. Your answer must be either y or n. Hit Enter to continue.");
F = getchar();
while ((getchar()) != F && EOF != '\n');
}
}
我还有其他与此类似的 while 循环,它们按预期工作,但使用的是 float 。所以我假设问题是我在这里使用 char 。现在发生的情况是它甚至不提示用户提出问题。它只是提出问题,然后立即显示错误。我确定此代码还有其他问题,但由于我无法获得工作提示,所以我无法测试其余部分。
最佳答案
我建议使用轻量级的 getchar()
而不是重量级的 scanf
。
#include <stdio.h>
int c; /* Note getchar returns int because it must handle EOF as well. */
for (;;) {
printf ("Enter y or n\n");
c = getchar();
switch (c) {
case 'y': ...
break;
case 'n': ...
break:
case EOF:
exit(0);
}
}
关于c - Char变量如何在C中工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21660948/