[問題] 解決輸入資料型態不符的問題
開發平台(Platform): (VC++)
問題(Question):解決輸入類型與設定不符合的問題
餵入的資料(Input):假設只允許輸入數字0~100
預期的正確結果(Expected Output):0~100正確輸出 其餘重新輸入
程式碼(Code):
#include<iostream>
int main(void)
{
int i,t;
while (1)
{
printf("key a number(0~100)\n");
t = scanf_s("%d", &i);
getchar();
if (t == 0 || i > 100 || i < 0)
continue;
else
break;
}
printf("%d\n", i);
system("pause");
return 0;
}
補充說明(Supplement):
Q1
原本我自己寫時沒有加入getchar();
可以解決輸入數字大於100和小於0的問題
但當我輸入的資料不是數字時就會形成死結
會不斷的跑printf("key a number(0~100)\n");這行程式碼,無法重新輸入資料
後來google以後發現有範例後面加入getchar();
我加入以後就可以解決死結、無法重新輸入的問題
有點不太懂為什麼
前面t = scanf_s("%d", &i);若資料輸入類型不是整數t會等於0
if (t == 0 || i > 100 || i < 0)我在這行有寫t==0就重新執行
為何不加入getchar();會形成死結呢
Q2
還有就算我加入了getchar();
若我輸入的字元大於1個然後按下Enter時(e.g. AA BBB ---)
雖然可以重新輸入
但是會跑出一個以上的printf("key a number(0~100)\n");
getchar();不是只會抓一個字元嗎
為何會跑出一個以上的printf("key a number(0~100)\n");
很久沒有寫C了最近在練習
語感很差 書上資料又很陽春
麻煩替我解惑一下 謝謝
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 114.27.134.192
※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1425746988.A.BD2.html
※ 編輯: DivineAngel (114.27.134.192), 03/08/2015 00:51:20
→
03/08 01:17, , 1F
03/08 01:17, 1F
→
03/08 01:18, , 2F
03/08 01:18, 2F
→
03/08 01:18, , 3F
03/08 01:18, 3F
→
03/08 01:19, , 4F
03/08 01:19, 4F
了解 用了scanf("%*s")後問題就簡單多了 感謝
※ 編輯: DivineAngel (114.27.134.192), 03/08/2015 01:39:16
C_and_CPP 近期熱門文章
PTT數位生活區 即時熱門文章