这是我最近问过的一个问题:
C Programming help - providing user with option to exit a program
我现在遇到了一个新问题。如果用户输入任何一个很好的字母,我可以让程序退出,但现在如果输入一个数字,则没有任何反应。 while循环似乎没有运行..
请你看看我的代码,看看你能发现什么是错的,谢谢。另外,理想情况下,如果用户希望退出,我希望关闭xterm的窗口。如果有人能告诉我如何做到这一点,我会很高兴。无论如何这里是代码:
#include <stdio.h>
#include <stdlib.h>
int main()
{
float number;
float sum = 0;
printf ("Please enter number or enter any letter to exit:\n");
scanf ("%f", &number);
// if user ENTERS a letter, program will terminate
if(1!=scanf ("%f", &number))
{
getchar();
printf ("Exiting the program...\n");
exit(0);
}
while (1)
{
sum += number;
printf ("Sum: %.2f\n", sum);
printf ("Please enter number or enter any letter to exit:\n");
scanf ("%f", &number);
// if user ENTERS a letter, program will terminate
if(1!=scanf ("%f", &number))
{
getchar();
printf ("Exiting the program...\n");
exit(0);
}
}
return 0;
}
答案 0 :(得分:0)
正如@BrianCain所评论的那样:您在scanf
声明中第二次呼叫if
。如果您输入了第一个scanf
的字母,它会强制第二个立即失败;如果您输入了第一个号码,那么第二个号码正在等待您输入另一个号码。
答案 1 :(得分:0)
我删除了两个scanf函数,它似乎解决了问题
#include <stdio.h>
#include <stdlib.h>
int main()
{
float number;
float sum = 0;
printf ("Please enter number or enter any letter to exit:\n");
// if user ENTERS a letter, program will terminate
if(1!=scanf ("%f", &number))
{
getchar();
printf ("Exiting the program...\n");
exit(0);
}
while (1)
{
sum += number;
printf ("Sum: %.2f\n", sum);
printf ("Please enter number or enter any letter to exit:\n");
// if user ENTERS a letter, program will terminate
if(1!=scanf ("%f", &number))
{
getchar();
printf ("Exiting the program...\n");
exit(0);
}
}
return 0;
}
你的scanf中删除了你上一次的值。
答案 2 :(得分:0)
虽然前两个答案基本上是正确的,但简单(和清晰)版本将是:
if(number == 1)
break;
将其放在原始scanf()
之后,完全摆脱其他if(..) ..;
条件。这将测试是否输入数字'1',如果是,将打破无限循环,允许程序继续下去return 0;
语句。
它还将处理可能令人困惑的风格,即具有退出条件(最终return 0;
),这基本上是不可能的,或应该是。