【发布时间】:2013-11-11 20:43:10
【问题描述】:
当我输入 0 时,程序结束。但是if语句中有getchar(),它不起作用,你能帮帮我吗?
在案例 0 中,我希望它从用户那里获取字符。如果输入'N' 或'n',程序将结束,否则程序将重新开始。 (来自 sec1)。
#include <stdio.h>
#include <stdlib.h>
int main()
{
int n;
sec1:
printf("Select a number between 4 and 0: ");
scanf("%d[\n]", &n);
switch(n)
{
case 0:
puts("Are you sure?");
puts("Yes(Y) or No(N)");
if(getchar() == 'N') goto sec1;
break;
case 1:
break;
case 2:
break;
case 3:
break;
case 4:
break;
default:
puts("Only numbers between 4 and 1 are accepted!");
goto sec1;
break;
}
system("pause");
return 0;
}
工作一个
int main()
{
int n, c;
sec1:
printf("Select a number between 4 and 0: ");
scanf("%d/n", &n);
switch(n)
{
case 0:
puts("Are you sure?");
puts("Yes(Y) or No(N)");
fflush(stdin);
if (getchar() == 'N') goto sec1;
break;
case 1:
break;
case 2:
break;
case 3:
break;
case 4:
break;
default:
puts("Only numbers between 4 and 1 are accepted!");
goto sec1;
break;
}
system("pause");
return 0;
}
【问题讨论】:
-
你为什么使用
goto?只需使用一个循环。 -
提示:如果按“N”或“n”,它的行为会有所不同吗?
-
实际上条件是 if(getchar()=='N' || getchar()=='n') 但我做不到
-
@user2588276:如果这是实际情况,你为什么要向我们展示不同的东西?向我们展示真实的代码。它不起作用,因为有两次对
getchar()的调用。如果您要多次查看getchar()的结果,请将其分配给一个变量并查看该变量:int c; c = getchar(); if (c == 'N' || c == 'n') ... -
我说它是*编辑:它也不能按照你说的方式工作,它仍然在不询问用户字符的情况下结束