我已經寫了一個小代碼來從華氏溫度到攝氏溫度值。我想繼續輸入數據,直到按下'y'以外的任何其他鍵。但是這個循環不能以這種方式工作,並在一次迭代後停止。scanf不能正常工作在這個c程序
#include <stdio.h>
int main()
{
char ch='y';
int far, cen;
do {
printf("again\n");
scanf("%d",&far);
//cen = (5.0/9.0)*(far-32);//integer division will truncate to zero so we can make 5/9 to 5.0/9.0
cen = (5*(far-32))/9;//or this way we can use this formula
printf("\n%d\t%d",far, cen);
printf("ch=%c",ch);
scanf("%c",&ch);
}while(ch == 'y');
return 0;
}
這裏有什麼問題? P.S 我加一條線,犯了這樣的
#include <stdio.h>
int main()
{
char ch='y';
int far, cen;
do {
printf("again\n");
scanf("%d",&far);//here we press carriage return. this value is in stdin
//cen = (5.0/9.0)*(far-32);//integer division will truncate to zero so we can make 5/9 to 5.0/9.0
cen = (5*(far-32))/9;//or this way we can use this formula
printf("\n%d\t%d",far, cen);
scanf("%c",&ch);//putting a space before %c makes the newline to be consumed and now it will work well
if((ch == '\r')|| (ch == '\n'))
printf("1\n");
printf("ch=%c",ch);//this takes the carriage return in stdin buffer
}while(ch == 'y');
return 0;
}
我需要知道這裏回車新的代碼爲\ R或\ n嗎?
如果Y後按「空格」或「返回」
回車/換行 –
在賦予'far'值後按'enter'。然後我打印'ch'中的值。 ch是'y',那麼這是一個運輸問題。 – mrigendra
@mrigendra您可以在'scanf'之前輸出'ch' *的值。在* scanf之後嘗試打印*。 –