在C中重置char []的最佳方法是什么?

时间:2009-11-14 23:04:24

标签: c string overwrite

我使用字符串:

char    word[100];

我从0开始为每个位置添加一些字符。 但是我需要能够清除所有这些位置,以便我可以从0开始添加新的字符。

如果我不这样做,那么如果第二个字符串缩短,那么第一个字符串在添加第二个字符串时最终会从第一个字符串中获得额外的字符,因为我没有覆盖它们。

4 个答案:

答案 0 :(得分:17)

如果要将整个数组清零,可以:

memset(word, 0, sizeof(word));

答案 1 :(得分:12)

如果使用C风格的零终止字符串,则无需清除它们。您只需要将字符串中最后一个字符后面的元素设置为NUL('\ 0')。

例如,

char buffer[30] = { 'H', 'i', ' ', 'T', 'h', 'e', 'r', 'e', 0 };
// or, similarly:
// char buffer[30] = "Hi There";  // either example will work here.

printf("%s", buffer);
buffer[2] = '\0';
printf("%s", buffer)

将输出

  

你好   您好

尽管buffer[3] == 'T'仍然是正确的。

答案 2 :(得分:3)

strcpy(word,"")也可用于此目的。

答案 3 :(得分:0)

*word = '\0';

超出15个字符发布限制的额外内容滚动眼睛