Ich versuche, in einer großen Textdatei und strcpy/strcat es in ein Array zu lesen.Realloc in einer großen Textdatei in C zu lesen
Ich habe ein einfaches Programm:
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);
}
Das Problem ist, dass schließlich nach einer Menge von Iterationen werden abstürze, aber ich bin mir nicht sicher, warum. Ich habe versucht,
text = realloc(text,sizeof(char) * strlen(buffer) + sizeof(text));
zu tun, aber dies funktioniert auch nicht.
Es ist verlockend, 'text = realloc (Text, newsize) zu tun,' aber es ist ein potentielles Speicherleck. –
'sizeof (text)' ist die Zeigergröße, nicht die Inhaltsgröße. Du brauchst 'stelen (text) + strlen (buffer) + 1' als neue Größe. – BLUEPIXY
Fehle ich etwas? Sie werden immer auf die Größe des Puffers umgestellt. Sie fügen nie auf die realloc Größe, immer nur die Größe des Puffers Sie gerade lesen ... – John3136