8

我使用一个字符串:

char    word[100];

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

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

4

4 回答 4

20

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

memset(word, 0, sizeof(word));
于 2009-11-14T23:06:27.703 回答
12

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

例如,

字符缓冲区[30] = { 'H', 'i', '', 'T', 'h', 'e', 'r', 'e', 0 };
// 或者,类似地:
// char buffer[30] = "你好"; // 任何一个例子都可以在这里工作。

printf("%s", 缓冲区);
缓冲区[2] = '\0';
printf("%s", 缓冲区)

将输出

你好
你好

即使它仍然是真实的buffer[3] == 'T'

于 2009-11-14T23:06:18.157 回答
4

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

于 2014-03-28T07:13:30.280 回答
1

您可以将空终止符分配给char数组的第一个位置。

*word = '\0';
于 2009-11-14T23:06:34.007 回答