[問題] scanf的問題

看板C_and_CPP作者 (烏斯木)時間14年前 (2010/11/27 13:49), 編輯推噓6(6011)
留言17則, 9人參與, 最新討論串9/11 (看更多)
遇到的問題: (題意請描述清楚) scanf 語法被跳過 希望得到的正確結果: scanf 被執行 得到的錯誤結果: 請輸入一數字 3 請輸入一四則運算符號 請再輸入一數字 開發平台: (例: VC++ or gcc/g++ or Dev-C++, Windows or Linux) Dev-C++ 有問題的code: (請善用置底文標色功能) #include<stdio.h> #include<stdlib.h> #include<conio.h> int main(){ float n1,n2,ans,a; char x; printf("請輸入一數字\n"); scanf("%f",&n1); printf("請輸入一四則運算符號\n"); scanf("%c",&x); printf("請再輸入一數字\n"); scanf("%f",&n2); if ( x == '+' ){ ans = n1 + n2 ; printf("ans:" "%f",ans); }else if ( x == '-' ){ ans = n1 - n2 ; printf("ans:" "%f",ans); }else if ( x == '*' ){ ans = n1 *n2 ; printf("ans:" "%f",ans); }else if ( x == '/'&&n2!=0 ){ ans = n1 / n2 ; printf("ans:" "%f",ans); } getch(); system("pause"); return 0; } 補充說明: 這是作業題...不過是我出給學生的 現在學生發生了這種事拿來問我 我也不清楚為什麼了... 請幫幫我 感謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 163.13.127.91

11/27 21:50, , 1F
我把scanf("%c",&x); 改成scanf("%c%c",&x,&x); 就過了...
11/27 21:50, 1F

11/27 21:50, , 2F
但是還是不知道為什麼
11/27 21:50, 2F

11/27 21:52, , 3F
因為 enter ('\n') 會被讀進去.
11/27 21:52, 3F

11/27 21:53, , 4F
scanf("%f",&n1); 改scanf("%f%*c",&n1);就沒這問題.
11/27 21:53, 4F

11/27 21:53, , 5F
其實這個 scnaf 也是常見問題,你爬文標題還跟你一樣...
11/27 21:53, 5F

11/27 22:00, , 6F
出給學生的...
11/27 22:00, 6F

11/27 22:25, , 7F
您教C語言嗎0.0
11/27 22:25, 7F

11/27 22:40, , 8F
fflush(stdin); <=這一行加到scanf("%f",&n1);後面!!
11/27 22:40, 8F

11/27 22:41, , 9F
樓上大大說的沒錯,是因為enter被讀入造成的。
11/27 22:41, 9F

11/27 22:42, , 10F
版上連我好多人都推過好幾次了別用 fflush(stdin)....
11/27 22:42, 10F

11/27 22:44, , 11F
正好剛剛心血來潮搜到一篇慘劇 #19nvgbVG
11/27 22:44, 11F

11/27 22:46, , 12F
好吧!不然也可以把"char x"改為"char x[2]",讓它去讀…
11/27 22:46, 12F

11/27 22:47, , 13F
字串 =>scanf("%s",x); 也可以。
11/27 22:47, 13F

11/27 22:51, , 14F
" %c"也行
11/27 22:51, 14F

11/27 23:25, , 15F
嗯…原來fflush/fflushall不是ANSIC標準。
11/27 23:25, 15F

11/27 23:32, , 16F
是用在 input stream 上不是標準...
11/27 23:32, 16F

11/28 01:48, , 17F
文章代碼(AID): #1CyGncxg (C_and_CPP)
討論串 (同標題文章)
完整討論串 (本文為第 9 之 11 篇):
問題
2
9
問題
3
11
問題
6
17
問題
1
1
問題
1
7
問題
1
4
問題
0
6
問題
1
3
問題
1
3
問題
-2
14
文章代碼(AID): #1CyGncxg (C_and_CPP)