在我的应用程序中,我们一次接受一个char值,我们需要能够将它们变成一个字符串。我们通过将char值放入char数组然后清除数组来逐个组装这些字符串。但是字符串的长度各不相同,我们无法确定字符串的大小。我们如何根据需要更改数组的大小以增加空间?
另外,我们如何打印出阵列?
答案 0 :(得分:4)
如果数组是使用malloc
动态分配的,您可以使用realloc
调整其大小:
int array_size = 1024;
char *array = (char *) malloc(array_size);
int n = 0;
char c;
while ((c = getchar()) != EOF) {
array[n++] = c;
if (n >= array_size) {
array_size += 1024;
array = (char *) realloc(array_size);
}
}
array[n] = '\0';
要打印出数组的内容,您只需将其传递给printf
或puts
:
printf("%s\n", array);
puts(array);
答案 1 :(得分:0)
如果您不知道自己需要的尺寸,并且一次添加一个字符,则可以考虑使用linked list
。它可以根据您的需要增长。 disadvntages将是查找有点慢,如果你需要释放内存,或清除它,你将不得不为每个元素,一次一个。
您还可以采用dynamic array
方法:分配您认为足够大的特定大小,当它满80%时,分配一个新缓冲区,两倍大,并复制旧缓冲区的内容。新的,更大的。