2011-11-18 60 views

回答

3

它只分配數組中的第41個字符到\0。因此,現在字符串包括字符在數組的前40個元素中表示的內容,即0到39個索引(假設在任何以前的元素中沒有其他NUL字符 - 感謝Kerrek SB !!)。
希望這有助於!

+0

那麼,在前40個字符「至多」。之前可能會有另一個零。 –

+0

@KerrekSB:謝謝你的收穫!更新回覆 –

+0

感謝KerrekSB和@ another.anon.coward - 非常有幫助的答案,所以現在緩衝區值被限制爲前40個字符(假設其間沒有其他空字符)。 –

5

不。它將值NUL存儲在數組中的第41個位置。

到第40個字符初始化到NUL

memset(buffer, '\0', 40); 

至Init,在編譯時整個緩衝區到NUL,嘗試

char buffer[512] = {0}; 

char buffer[512] = ""; 

要初始化它在運行時間,試試

memset(buffer, '\0', sizeof (buffer)); 
+0

Mac是對的;位置41. – EvilTeach

1

它分配字符'\0'(即, NUL字符)到第41個數組元素。