關於 scanf 的錯誤運作問題,請指教~
程序代码:
#include <stdio.h> #include <stdlib.h> int main () { char str[20]; int A, B, C; printf("請輸入學生姓名:\n"); scanf("%s", str); printf("請輸入平時考、期中考及期末考成績:\n"); scanf("%d %d %d", &A, &B, &C); printf("%s的平時考、期中考及期末考成績分別為:%d、%d、%d\n", str, A, B, C); system("PAUSE"); return 0; }
此程式本可以正常運作的,例如當我輸入 CHAN 作為字串時~
但當我輸入字串「CHAN TAI MAN」時,程式便不能正常運作~
我明白「scanf("%s", str);」只會輸入空白位前的字串,即 CHAN~
但輸入 CHAN TAI MAN 後,程式便自動執行到尾,沒有停下來讓使用者輸入 ABC 的數值,最後輸出 ABC 的數值是沒有意義的數字~
請問為何會這樣呢?
還有另一問題,當我將「scanf("%s", str); 」換成「scanf("%5s", str); 」,但在輸入字串時輸入超過五個字元時,情況同上~
假設我輸入 CHANTAIMAN,程式便自動執行到尾,沒有停下來讓使用者輸入 ABC 的數值,最後輸出 ABC 的數值是沒有意義的數字~
程式到最後輸出字串是 CHANT,這是預期的結果沒錯,只是中間沒有停下讓使用者輸入 ABC 的數值~
請問為何會這樣呢?
[ 本帖最后由 no_use 于 2013-5-29 22:48 编辑 ]