2015-10-26 42 views
0

您好我已經用C剛剛開始編程,我想提出一個陣列櫃,但我得到的分割錯誤,當我嘗試運行此:誰能告訴我爲什麼我在這個C代碼中出現分割錯誤?

//function to calculate the length of an array 
int arr_length(char arr[]) { 
    int i = 0; 

    while(arr[i] != "\0") { 
    i++; 
    } 

    return i; 
} 
+0

'arr'是一個指針,而不是一個數組。並啓用編譯器警告。你的編譯器要大聲喊出來。 – Olaf

回答

0
while(arr[i] != "\0") { 
    i++; 
} 

等同於:

char const* str = "\0"; 
while(arr[i] != p) { 
    i++; 
} 

您正在比較charchar*。大部分時間評估爲false。因此,您最終會超出有效限制訪問arr,這會導致未定義的行爲。在你的情況下,這表現爲分割錯誤。

您需要使用:

while(arr[i] != '\0') { // Compare with the null character 
    i++; 
} 
相關問題