我想不断向char添加一个char *(我已经把它放在C中保存字符串的最佳方法),然后,经过一定数量的循环后,我希望能够清除char *并再次重复该过程。如何在char *中添加char?
答案 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如何使用空终止字符串。