Ich möchte Zeile für Zeile in eine Datei einlesen, ohne vorher die Zeilenlänge zu kennen. Hier ist, was ich bisher habe:Zeile aus Datei lesen, ohne die Zeilenlänge zu kennen
int ch = getc(file);
int length = 0;
char buffer[4095];
while (ch != '\n' && ch != EOF) {
ch = getc(file);
buffer[length] = ch;
length++;
}
printf("Line length: %d characters.", length);
char newbuffer[length + 1];
for (int i = 0; i < length; i++)
newbuffer[i] = buffer[i];
newbuffer[length] = '\0'; // newbuffer now contains the line.
ich jetzt die Zeilenlänge herausfinden kann, aber nur für Linien, die kürzer als 4095 Zeichen, plus der zwei char-Arrays scheint, wie eine unangenehme Art und Weise die Aufgabe, zu tun. Gibt es einen besseren Weg, dies zu tun (Ich habe bereits fgets() verwendet, aber mir wurde gesagt, dass es nicht der beste Weg ist)?
--Ry
Es ist 'realloc' nicht' relloc'. –
Nur als eine Anmerkung, Zeichen-zu-Zeichen-Lesen ist extrem langsam. Sie sollten es in großen Stücken lesen (4-16k). – Blindy
@Blindy: vorzeitige Optimierung ... –