我正在尝试读取一个大文本文件并将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));
但这也不起作用。
答案 0 :(得分:0)
可能是strlen(buffer)
大小为零,在这种情况下,realloc可能会将一个点返回NULL。
从realloc返回时要安全地检查NULL,甚至可以在调用realloc之前检查缓冲区的长度。