Realloc将在C中的大文本文件中读取



我正在尝试在一个大文本文件中阅读,然后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));

但这也不起作用。

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

相关内容

  • 没有找到相关文章

最新更新