Realloc读入C中的大文本文件

时间:2017-03-10 00:22:37

标签: c malloc realloc

我正在尝试读取一个大文本文件并将strcpy / strcat读入一个数组。

我有一个简单的程序:

char buffer[500000];
char *text;
text = malloc(sizeof(char) * 1);
strcpy(text,"");

while (fgets(buffer,sizeof(buffer),fp) != NULL)
{
    text = realloc(text,sizeof(char) * strlen(buffer));
    strcat(text,buffer);
    printf("%s",text);
}

问题是最终经过多次迭代后会崩溃,但我不确定原因。我试着做

text = realloc(text,sizeof(char) * strlen(buffer) + sizeof(text));

但这也不起作用。

1 个答案:

答案 0 :(得分:0)

可能是strlen(buffer)大小为零,在这种情况下,realloc可能会将一个点返回NULL。 从realloc返回时要安全地检查NULL,甚至可以在调用realloc之前检查缓冲区的长度。