int a ;
scanf("%d", &a);
我是用整數型態去宣告變數a
可是當我輸入的不是整數 而是英文
就會當掉
這個要怎麼改?
2006-11-28 20:48:18 · 3 個解答 · 發問者 Stanly 2 in 電腦與網際網路 ➔ 程式設計
不好意思,我可能問題上寫得太不夠清楚了
我重新再寫一次我的問題
int a ;
main()
{
printf("請輸入一個整數");
scanf("%d", &a ) ;
while ( assets == 0 ){
printf("輸入錯誤,重新輸入:");
scanf("%d", &assets);
}
getch();
}
我是給人輸入一個整數, 可是當別人輸入的是英文時
就會整個變成無窮回圈,不斷顯示「輸入錯誤,重新輸入:」
2006-11-29 15:07:05 · update #1
你的意思是指變數a是字元嗎?
那應該把
int a ;
scanf("%d", &a);
改成
char a ;
scanf("%c", &a);
char為宣告為字元的型態
試試看對不對!
有問題的話再問唷^^
2006-12-02 01:25:57 補充:
問一下唷~是指假如我第一次輸入的是英文他就會進入無線迴圈,一直顯示「輸入錯誤,重新輸入:」還是說我輸入英文他會顯示出 「輸入錯誤,重新輸入:」之後~讓我再重新輸入
2006-11-28 21:42:48 · answer #1 · answered by ? 2 · 0⤊ 0⤋
因為 char 字元型態資料等同於整數型態,當使用者輸入字元,字元變數接收的是整數值。在電腦記憶體內,宣告的字元變數,後面接續的資料可能是亂碼,也有可能是其他使用者未知的資料,執行程式時,會造成電腦讀取資料的錯誤。所以可以用以下的解決方法…char a[2];scanf("%s",a);當使用者輸入 B 這個字元時,字串變數 a 接收資料為…B\0a[0]='B'a[1]='\0'字元後接 "\0" 這個字串的結束字元,讓電腦知道,讀取 B 這個字元(實際上算字串)後不要再繼續取後面的資料,這個方式可以避免電腦讀取字元資料上的錯誤。
2006-11-30 17:10:51 補充:
宣告字串的方式,不僅可以用在輸入字元,也可以用在輸入數值。當使用者輸入數值,可以利用 atoi 函數轉成整數,再做四則運算的動作。
2006-11-30 17:13:32 補充:
上面補充的程式碼有問題,宣告兩個變數,輸入到 a 變數,檢查到 assets 變數。
2006-11-29 07:58:07 · answer #2 · answered by Big_John-tw 7 · 0⤊ 0⤋
把a宣告成char
%d改成%c就好囉^^
宣告文字要用char..
2006-11-29 04:02:56 · answer #3 · answered by Gene 2 · 0⤊ 0⤋