[問題] 如何判別輸入資料為非數字?

看板Programming作者 (我不在~)時間18年前 (2007/05/11 15:28), 編輯推噓3(301)
留言4則, 3人參與, 最新討論串1/3 (看更多)
寫題目時突然想到如果有眼睛不好的、手滑的 鍵入非數字的資料(+-*/abc之類的) 有辦法判斷嗎?怎樣程式才不會亂掉? 希望有高手指點迷津~ <(_ _)> 我是newb...囧rz ============================以下是我的source code============================ #include <stdio.h> #include <stdlib.h> #define num 15 int i, a[num]={0}, sort, temp; int main() { /* 判斷數值 */ printf ("輸入%d位正整數\n", num); do { for (i=0; i<num; i++) { printf ("第%d個數:", i+1); scanf ("%d", &a[i]); if (a[i]<0) { printf ("錯誤,請輸入正整數\n"); break; } } } while (a[i]<0); /* 排序 */ for ( sort = 1; sort < num; sort++ ){ for ( i=0; i < num-sort; i++ ){ if ( a[i] > a[i+1] ){ temp = a[i]; a[i] = a[i+1]; a[i+1] = temp; } } } /* 輸出 */ printf ("8th value=%d\n", a[7]); system ("pause"); return 0; } -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.123.222.57

05/11 16:04, , 1F
使用 #include <ctype.h> 中的isdigit()
05/11 16:04, 1F

05/11 16:23, , 2F
man scanf. mismatch返回zero.
05/11 16:23, 2F

05/11 18:42, , 3F
如果是輸入整數的話,+, - 符號,可以接受
05/11 18:42, 3F

05/11 18:43, , 4F
如果是浮點數的話,增加 ., E, e 都可以
05/11 18:43, 4F
文章代碼(AID): #16H1iAc4 (Programming)
文章代碼(AID): #16H1iAc4 (Programming)