Ich schreibe ein Stück Code und ein Teil davon liest "Datensätze" von Datei zu n-Länge Array, n als ein Argument gegeben. Datensätze in Datei haben konstante Länge (in diesem Fall 1024) und enthalten nur numerische Zeichen, Leerzeichen und untere Buchstaben. Jeder Datensatz wird mit \ n abgeschlossen. Ich verwende folgende Struktur einen Datensatz zu halten:Lesen von Daten von Datei zu Struktur mit fread
typedef struct{
char rec[1024];
} record;
Und-Code für n von ihnen zu extrahieren und in n-Array mit der Länge von Datensätzen speichert, wird auf diese Weise geschrieben:
record * recs=malloc(n*sizeof(record));
size_t read=fread(recs,sizeof(record),(size_t)n,f);
Wenn ich Ausgang geprüft Von diesen Operationen stellt es sich heraus, dass das erste Element von Array-Recs alle Datensätze enthält, das zweite alles außer dem ersten und so weiter, anstatt eines bei jedem Element des Arrays zu behalten. Ich bin irgendwie verloren, weil ich dachte, dass es jeden Datensatz in einem anderen Array-Element speichern sollte. Wie bereits angedeutet, ich bin die Bereitstellung Code auch eine Datei und Druckelemente des Arrays zum Öffnen:
if((f=fopen(argv[2],"r"))==NULL){
perror("error opening file\n");
exit(1);
}
for(int i=0;i<(int)read;i++){
printf("record number %d\n %s\n",i,recs[i].rec);
}
zeigen Sie den Code, der aus den Aufzeichnungen, und auch den Code schreibt, dass 'die Datei fopen's. – dasblinkenlight
@dasblinkenlight Ich habe meine Frage nach Ihren Vorschlägen bearbeitet. –
Ändern Sie "r" in "rb" und sehen Sie, ob es hilft. – dasblinkenlight