2012年2月3日 星期五

[C/C++基礎]- While_解決處理當使用scanf時因使用者輸入型態不符時的問題

[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);

    }

}

 



 


沒有留言:

張貼留言