我正在尝试在一个大文本文件中阅读,然后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之前检查缓冲区的长度。