程序在输出之前不会等待

时间:2014-04-18 18:25:23

标签: c printf output scanf

我是C编程的新手,我在使用以下代码时遇到了问题。

#include <stdio.h>

int main(void)

{   
int input_number;
int largest_number = 0; 
char reply; 

printf("Hello world\n");
printf("This is a simple program, that will output the largest number entered\n");
printf("Please enter a number");
while (reply != 'N') 
{  // Start of WHILE loop


printf("Please enter a number");
scanf("%d",&input_number);
if (input_number > largest_number)
    largest_number = input_number;
printf("\nDo you wish to enter another number? Y/N\n");
scanf("%c",&reply); // Problem with this line

}  // End of WHILE loop






printf("%d",largest_number); 
getch();

问题是这样的:当用户输入一个号码时,程序输出'你想输入另一个号码吗? Y / N”。该程序不会等待答案,并输出“请输入一个数字”。如果输入“N”而不是数字,循环将停止。

如果回复“你想输入另一个号码吗?”,如何在输出“请输入号码”之前让程序等待并退出循环是'N'?

1 个答案:

答案 0 :(得分:3)

第一个\n在缓冲区中留下的换行符scanf由您的第二个scanf读取。你需要消耗它。试试这个

scanf(" %c",&reply);  
       ^ a space before %c can consume any number of white-spaces