2011-11-18 63 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个数组元素。