我想不断地向字符*添加一个字符(我认为这是在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 结尾的字符串。