C - Wie lese ich alle Zeilen einer Datei
Im nicht sicher, wie zu Lesen, die Zeilen einer Datei, atm, es liest nur die erste Zeile der code in der text-Datei. Kann mir jemand zeigen, wie man es Lesen alle Zeilen?
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main(int argc, char **argv)
{
FILE *fp;
fp = fopen("specification.txt", "r");
char ** listofdetails;
listofdetails = malloc(sizeof(char*)*6);
listofdetails[0] = malloc(sizeof(char)*100);
fgets(listofdetails[0], 100, fp);
/*strcpy(listofdetails[0], "cars");*/
printf("%s \n", listofdetails[0]);
free(listofdetails[0]);
free(listofdetails);
fclose(fp);
return 0;
}
MEINER text-Datei:
10X16 de4 dw9 ds8 g8,7 m3,4 h6,5 p2,2
10X16 de4 dw9 ds8 g8,7 m3,4 h6,5 p2,2
10X16 de4 dw9 ds8 g8,7 m3,4 h6,5 p2,2
- Wie wärs mit "weiterhin fordern
fgets
"? - Wie wäre es mit ` for` - Schleife?????
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wenn Sie möchten, Lesen Sie die 'specification.txt' text-Datei zeilenweise ein, Sie können tun, dass auf diese Weise:
Stellen Sie sicher, dass Ihr 'Zeile' Puffer groß genug ist.
Verwenden getline(3), vorausgesetzt, Ihr OS & libc ist Posix2008 kompatibel (zB. auf Linux):
Den obigen code akzeptieren kann, wie viel Linien, und als große Linien, wie die system-Ressourcen zu ermöglichen. Auf meinem leistungsstarken laptop (16Gbytes RAM), ich könnte in der Lage sein zum Lesen einer Datei von mehr als einer million Zeilen, die jeweils fast tausend chars (oder eine Datei mit einer einzigen Zeile von vielen Millionen Zeichen).
Am Ende (des Programms) sollten Sie besser freier Arbeitsspeicher:
anderes Beispiel: Sie können
getline
wenn Sie sich gezielt eine POSIX-Plattform. es teilt Raum benötigt, um zu speichern, aber Sie müssen es selbst. wenn es ein Fehler oder EOF, getline gibt -1 zurück.Lesen Sie die gesamte Datei in der folgenden Art und Weise:
Der obige code liest die
filename.txt
- Datei und drucken Sie es aus, um diestdout
.fseek(fp, 0, SEEK_END)
ist nicht tragbar, und es gibt eine portable Art und Weise, es zu tun.