在 C 中追加和清除字符串



我想不断地向字符*添加一个字符(我认为这是在C中保存字符串的最佳方式),然后,经过一定数量的循环后,我希望能够清除char*并再次重复该过程。如何在我的字符中添加字符*?

如果您有一定数量的字符,则可以使用以下语法使用 malloc 来分配该数量:

char *str = malloc(number_of_chars);

然后,您可以通过迭代分配的数量来添加字符,如下所示:

for (int i = 0; i < number_of_chars; i++)
{
    *(str + i) = ...; //the source of your chars is unspecified
}

如果你想清除你的str,你可以像这样使用函数free

free(str);

希望这对你有所帮助。

在 C 中,字符串必须为其分配内存。如果你想要一个可变长度的字符串,你需要在它的大小增长时反复为它重新分配内存,除非你提前知道它会有多大。

如果您知道字符串永远不会超过某个大小,则可以使用 char *my_str = (char*)malloc(BUFF_SIZE); 分配该大小的缓冲区,并使用 my_str[position] = my_char; 添加每个字符。若要重置字符串,请使用 bzero(my_str, BUFF_SIZE);

如果字符串可能具有无限长度,则需要在每次缓冲区填满时继续分配更多内存。分配较大的缓冲区后,必须将旧缓冲区的内容复制到其中(创建缓冲区后无法更改缓冲区的大小。

只要有足够的空间,就可以简单地使用 strcat ,例如

char *s = malloc(100);
strcpy(s, "Hello");
strcat(s, ",");
strcat(s, " ");
strcat(s, "w");

另一种方法是维护最后一个字符的索引并直接访问字符

char *s = malloc(100);
int len;
strcpy(s, "Hello");
len = strlen(s);
s[len++] = ',';
s[len++] = '';
s[len++] = ' ';
s[len++] = '';
s[len++] = 'w';
s[len++] = '';

如果字符串的容量已耗尽,则必须realloc内存以腾出更多字符的空间

s = realloc(s, 200);

你需要了解 C 中固有的 strcat(和其他)字符串函数。

例如:

char x[10];
strcpy(x,"Compiler");
strcat(x,":");

您还必须了解 C 如何处理以 null 结尾的字符串。

最新更新