我有一个字符串char *array[4];
array[0]= "A";
array[1]= "BB";
array[2]= "CCC";
array[3]= NULL; //I need the last one to be null
数组,里面有5个元素,但我需要再次使用它。我怎么能把其他东西放进去呢?如何使它变大或变小(这样它不会占用太多内存)。
例如:
{"A", NULL}
但现在我又需要它来存储可能只有{"A", "BB", "CCC", "DDDD", NULL}
或start
我有另一个函数来处理需要存储在数组中的内容,它只是按字分割用户的输入并将它们存储在数组中。在需要数组之前,用户的输入将是已知的,因此我将知道将有多少单词以及数组应该有多大。将多次要求用户输入,这就是我需要重写数组的原因。 我怀疑我需要使用malloc / realloc,但是如果有人能指出我正确的方向,我们将非常感激,欢迎每一个回复!
答案 0 :(得分:1)
如果您需要可调整大小的数组,您有两种选择:
使用足够大的数组并跟踪其大小。
const size_t MAX_SIZE = 255;
void resize(char** array, size_t* curr_size, size_t new_size)
{
assert(new_size <= MAX_SIZE);
*curr_size = new_size;
array[new_size - 1] = NULL;
}
// ...
int main()
{
char* array[MAX_SIZE];
size_t curr_size = 0;
resize(&array, &curr_size, 32);
assert(array[31] == NULL);
}
使用malloc
,free
或类似的动态内存管理功能。