在C中追加和清除字符串

时间:2014-02-09 22:44:20

标签: c string append

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

4 个答案:

答案 0 :(得分:1)

如果您有一定数量的字符,那么您可以使用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);

希望这对你有所帮助。

答案 1 :(得分:0)

在C中,字符串必须为它们分配内存。如果你想要一个可变长度的字符串,你需要重复为它分配内存,因为它的大小会增加,除非你知道它预先有多大。

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

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

答案 2 :(得分:0)

只要有足够的空间,您只需使用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++] = '\0';
s[len++] = ' ';
s[len++] = '\0';
s[len++] = 'w';
s[len++] = '\0';

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

s = realloc(s, 200);

答案 3 :(得分:0)

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

例如:

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

您还必须了解C如何使用空终止字符串。