[C/C++基礎]- While_解決處理當使用scanf時因使用者輸入型態不符時的問題
本篇要分享While_解決處理當使用scanf時因使用者輸入型態不符時的問題,有興趣的(C/P)同好,歡迎來(C/P)一下哈哈 ^ ^。
程式碼 |
#include <stdio.h> /* 假設以下是程式馬 int a; while(1) { scanf("%d",&a); } 然後呢 應該是無限迴圈 ~ 之後在每次回圈應該都可輸入一次數字! 好~是這樣沒錯 ! 但是為什麼輸入英文字時~他不會再呼叫 scanf 會直接無窮迴圈下去 !! 然後我問一下 , 在 int %d 裡打英文 , 不是那個數字會變成0嗎?? 如果要判斷你輸入的自是不是正確的 可以這樣嗎 ////////////////////////////////////////////////////////////// 解答 輸入英文後,因為那個英文還是沒有被讀進來,所以會殘存著,下次scanf還是因為是英文所以傳回0 可以判斷如果輸入錯誤就再 scanf 一次,但這次是接收 %s,不是%d,這樣就可以把那個英文接收, int a; char b[256]; while(1) { if(scanf("%d", &a)==0) scanf("%s", b); } */ void main() { int a=0; char b[256]; while(1) { printf("key in a int value\t"); if(scanf("%d", &a)==0) { scanf("%s", b); printf("you input the data %s\n",b); } printf("you input the data %d\n",a); } }
|
沒有留言:
張貼留言