在C中制作更大或更小的字符串数组

时间:2016-11-29 16:29:10

标签: c arrays pointers

我有一个字符串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,但是如果有人能指出我正确的方向,我们将非常感激,欢迎每一个回复!

1 个答案:

答案 0 :(得分:1)

如果您需要可调整大小的数组,您有两种选择:

  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);
    }
    
  2. 使用mallocfree或类似的动态内存管理功能。