我正在寫一個程序,它從用戶讀取的輸入所選擇的代碼和取決於它計算(面積,周長,體積或退出)如何scanf的
#include<stdio.h>
int main(void)
{
double radius=0.0;
double area=0.0;
double volume=0.0;
double height=0.0;
double circumference=0.0;
const double pi=13.459820934;
char choice;
do
{
printf("Choose what you want to do : \n"
"Calculate Area A\n"
"Calculate Circumference C\n"
"Calculate Volume V\n"
"Quit Q\n");
/*scanf("%c",&choice);*/
choice=getchar();
printf("please enter radius : ");
scanf("%lf",&radius);
if(choice=='V')
{
printf("please enter height : ");
scanf("%lf",&height);
}
area = pi * radius * radius;
volume = height * area;
circumference = 2 * pi * radius;
switch (choice)
{
case 'A':
printf("Area = %lf\n\n",area);
break;
case 'V':
printf("Volume = %lf\n\n",volume);
break;
case 'C':
printf("Circumference = %lf\n\n",circumference);
break;
default:
printf("Not a good answer !!\n\n");
}
}while(choice!='Q');
return 0;
}
當前清洗緩衝我運行該程序對於第一個循環運行良好,但在第二次開始循環時再次選擇了選項後,它不會等待我輸入我的選擇,它會直接打印「請輸入半徑」
當我調試程序時,我發現第二次啓動循環時選擇了'\ n',我怎樣才能在每個循環中刪除這個'\ n'? 我知道這個'\ n'是由循環運行第一次讀取用戶選擇而產生的,但我不知道爲什麼選擇從選擇中刪除,而不是?
我已經試過顯示的選項給用戶,但同樣的問題之前初始化的選擇發生
任何幫助嗎?提前
可能重複的[如何清除輸入緩衝區在C?](http://stackoverflow.com/questions/7898215/how-to-clear-input-buffer-in-c) –