2010-09-18 55 views
1

我正在寫一個簡單的循環,以確保我的輸入是一個有效的二進制文件。例如:當任何高於1的數字是用戶輸入時,我想拋出一個錯誤。我知道我需要檢查ASCII碼。這裏發生了什麼?輸入二進制文件時,不應該出現錯誤。有什麼想法嗎?二進制數字。錯誤時檢查確保二進制輸入是二進制

for (int i=0;i<size;i++) 
{ 
    printf("%i is string sub %i\n",int(binary[i]),i); 
    if (int(binary[i]) != 48 || int(binary[i]) != 49) 
    { 
     printf("ERROR NOT A BINARY NUMBER\n"); 
     exit(0); 
    } 
} 

輸入:

0101 

輸出:

48 is string sub 0 
ERROR NOT A BINARY NUMBER 
+0

沒有'binary []'的定義'這個問題無法回答。 – msw 2010-09-18 03:42:09

回答

6

您需要使用if (int(binary[i]) != 48 && int(binary[i]) != 49) - 注意& &而非||。按照原樣,if(...)實際上是if(true),因爲binary[i]不能同時是48和49。

+0

OMG,謝謝.... – ChitownDev 2010-09-18 03:44:32

+0

np - 很高興能有所幫助。 – 2010-09-18 04:07:13

1

您正在使用錯誤的布爾運算符。如果你大聲讀出你的if語句,這聽起來是這樣的:

如果binary [i]不是'0'或者它不是'1',執行if語句內部的內容。

它怎麼可能是兩件事情在同一時間?

使用&&而不是||