-3
我試圖讀取一個大的文本文件和strcpy/strcat到數組中。重新分配在C中的大文本文件中讀取
我有一個簡單的程序:
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));
但這不工作。
這很誘人做'text = realloc(text,newsize);'但這是潛在的內存泄漏。 –
'sizeof(text)'是指針大小,而不是內容大小。你需要'stelen(text)+ strlen(buffer)+ 1'作爲新的大小。 – BLUEPIXY
我錯過了什麼嗎?每次重新分配緩衝區的大小。你永遠不會加入到realloc的大小,總是剛剛讀取的緩衝區的大小... – John3136