2014-10-19 61 views
-1

所以我們可以說我有一個字符數組,稱爲str大小爲12,並且我在數組中輸入1000110,其中str [0] = 1,str [1] = 0等等...我通過在for循環中打印它來測試數組,它工作。獲取字符數組中的初始值的長度

然後我想要統計在陣列中啓動了多少個整數。在這種情況下,該值應爲:7

這裏是我的代碼,無論出於何種原因,輸出爲1,而不是7

int length; 
length = 12; 

int actual_length() 
{ 
    int act_length = 0; 
    int i; 
    for (i = 0; i < length; i++) 
    { 
     if (str[i] == 0 || str[i] == 1) 
     { 
      act_length++; 
     } 
    } 
    printf("TEST ACTUAL LENGTH: %d\n", act_length); 
    return act_length; 
} 

我也試過

(int)str[i] 

爲比較,但這並沒有改變結果。

+0

*您不能*測試是否數組被從中讀取初始化。如果您讀取*未初始化的*部分*,則根據C標準,您的程序的行爲是** undefined **。 – EOF 2014-10-19 20:26:06

+0

在將'1'和'0'放入它們之前,它們被初始化爲*嗎?如果沒有,那麼你將在該循環中從未初始化的內存中讀取,這是不好的。如果它們初始化爲'0',那麼你的長度總是爲'12',這裏。 – 2014-10-19 20:27:07

+0

Rether而不是討論如何初始化'str',顯示代碼。 – chux 2014-10-19 20:54:25

回答

1

您有一個由字符組成的字符串。

你需要比較對字符值:

if (str[i] == '0' || str[i] == '1')