2012-08-12 46 views
5

我只是想看看如何檢查char *數組中的空終止字符,但我失敗了。我可以使用for循環過程找到這個長度,你可以繼續檢查每個元素,但我只想使用while循環並找到空終止字符串。我似乎從未退出while循環。任何理由爲何如此?檢查字符中的空終止字符*

char* forward = "What is up"; 
int forward_length = 0; 
while (*(forward++)!='/0') { 
    forward_length++; 
    printf("Character %d", forward_length); 
} 
+12

您是否收到有關多字符常量的警告?您正在使用斜槓,它的'''0'不是''/ 0'' – Musa 2012-08-12 02:42:46

+0

聲明forward_length作爲寄存器類有時也可能有用。 – Ram 2012-08-13 06:44:17

回答

23

您已經使用'/0'代替'\0'。這是不正確的:'\0'是空字符,而'/0'是一個多字符文字。

此外,在C這是確定你的條件跳過零:

while (*(forward++)) { 
    ... 
} 

是檢查字符,整數,指針等,爲爲零的一種有效方式。

14

空字符是'\0'而不是'/0'

while (*(forward++) != '\0') 
6

'/0'應該是'\0' ..你有斜線扭轉/傾斜走錯了路。你while應該是這樣的:

while (*(forward++)!='\0') 

雖然你表達的!= '\0'部分是可選在這裏,因爲環路會,只要它的計算結果爲繼續非零(null被認爲是零,將終止循環) 。

所有「特殊」字符(即escape sequences非打印字符)用一個反斜槓,如標籤'\t',或換行'\n',與同爲空'\0'所以很容易記住。

6

爲了使這個完整:而其他人現在解決了你的問題:)我想給你一個很好的建議:不要重新發明輪

size_t forward_length = strlen(forward); 
+0

如何使用這個size_t邏輯? – vkaul11 2013-05-12 01:15:33

+0

@ vkaul11「使用這個size_t邏輯」是什麼意思? – 2013-05-12 04:18:53

+0

@ H2CO3對不起,但編寫預定義函數的代碼總是一個好習慣 – 2013-10-13 11:34:06