【问题标题】:how do i use malloc when I am in infinite while loop当我处于无限while循环中时如何使用malloc
【发布时间】:2018-05-22 00:02:02
【问题描述】:

我有一个程序反复询问用户输入一行并将它们存储在一个数组中。 如果我可以在运行时获得许多要存储的项目,我知道如何使用动态内存分配来制作数组。 例如

char **array = (char**)malloc(numberOfItems * sizeof(char*));

但就我而言,我在运行时不知道 numberOfItems,因为我在 while 循环中获取输入,该循环可以通过 ctrl+D 终止。

while(!feof(stdin)
{
    array[i] = (char*)malloc(167 * sizeof(char));
}

请帮忙。

【问题讨论】:

标签: c malloc


【解决方案1】:

您可以使用realloc() 来增加通过malloc()calloc()realloc() 获得的内存大小。

int capacity = 10;
char **array = malloc(capacity* sizeof(char*));

int i = 0;
char line[256];
while(fgets(line, sizeof(line), stdin)) {
    // Resize array when at capacity
    if (i == capacity) {
        capacity *= 2;
        array = realloc(array, capacity * sizeof(char*));
    }

    array[i] = malloc(167 * sizeof(char));
    i++;
}

一些相关说明:

希望这足以让您入门!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-07-31
    • 1970-01-01
    • 2014-03-29
    • 2015-06-25
    • 1970-01-01
    • 1970-01-01
    • 2012-12-24
    相关资源
    最近更新 更多