Supportnet / Forum / Anwendungen(Java,C++...)
einlesen eines structs aus einer datei in c
Frage
hi @ all
ich hab ein kleines problem, bei der programmierung eines quellcodes. da ich noch mich noch nicht so gut mit dem einlesen von dateien auskenne und anfänger bin, wende ich mich hoffungsvoll an euch.
aber nun zu dem problem. ich habe von einen vorgesetzten eine datei bekommen, in der schon daten eingetragen sind, die ich einlesen soll und auswerten muss. das problem das ich dabei habe ist, das die daten in form eines struct´s aufgebaut sind. der struct hat folgenden aufbau:
struct Satz
{
char Ort[15][16];
char Kfz[15][4];
int Entfernung[15][15];
};
das problem mit dem fopen habe ich schon alles, ebenfalls kann ich ohne probleme die char zeichen einlesen, nur die int werte funktionieren nicht, da kommt nur müll heraus.
wer kann mir bei meinen problem helfen?? bin für jeden tipp dankbar..
Antwort 1 von abc123
Hier ein Beispiel
#include <stdio.h>
void clear(void* record, int recordsize) {
memset(record,0,recordsize);
}
struct Satz {
char Ort[15][16];
char Kfz[15][4];
int Entfernung[15][15];
};
int main() {
struct Satz rec;
FILE *datfile;
clear((void*)&rec, sizeof(rec)); // mit 0 füllen
datfile = fopen("daten.dat","wb");
//... Weitere Verarbeitung
fwrite(&rec,sizeof(rec),1,datfile);
fclose(datfile);
}
Gruss,
Michael
#include <stdio.h>
void clear(void* record, int recordsize) {
memset(record,0,recordsize);
}
struct Satz {
char Ort[15][16];
char Kfz[15][4];
int Entfernung[15][15];
};
int main() {
struct Satz rec;
FILE *datfile;
clear((void*)&rec, sizeof(rec)); // mit 0 füllen
datfile = fopen("daten.dat","wb");
//... Weitere Verarbeitung
fwrite(&rec,sizeof(rec),1,datfile);
fclose(datfile);
}
Gruss,
Michael
Antwort 2 von abc123
Ups! Ich sollte wohl zuerst die Frage lesen. Du hast das Lesen gemeint, nicht das Schreiben. :-)
datfile = fopen("daten.dat","rb");
if(datfile == NULL) {
... Fehler melden und raus
}
rewind(datfile); // zum Dateianfang
fread((void *)&rec,sizeof(rec),1,datfile);
usw.
Gruss,
Michael
datfile = fopen("daten.dat","rb");
if(datfile == NULL) {
... Fehler melden und raus
}
rewind(datfile); // zum Dateianfang
fread((void *)&rec,sizeof(rec),1,datfile);
usw.
Gruss,
Michael