Struktur in file schreiben

bahanfar

Grünschnabel
Hallo,
ich habe ein C-Anfängerproblem:
Ich möchte Strukturdaten in eine Datei schreiben und wirder darauf zugreifen und diese auf dem Bildschirm darstellen. Was ist im folgenden Programm falsch, dass die Daten nicht richtig in die Datei geschrieben werden? Wie kann ich auf diese zur Darstellung zugreifen?
Danke und Grüße
Bahanfar

#include <stdio.h>
#include <stdlib.h>
#include <fcntl.h>

typedef struct header_struct
{
int dataID;
int info;

struct datatype
{
int first:1;
int type:4;
int cript:1;
}datatype1;

}HEADER;

FILE *dlt_file = NULL;
char *filename;

void writeInFile(FILE *file,HEADER data)
{
fwrite(&data,sizeof(HEADER),1 , file);
}

void readOutFile(FILE *file)
{
HEADER test;

fread(&test, sizeof(HEADER), 1, file);

//printf();
}

int main(void)
{
HEADER header;

filename = "data.dat";

if((dlt_file = fopen(filename, "r+b")) == NULL) {
return 0;
}
header.dataID = 12;
header.info = 110;
header.datatype1.cript = 0;
header.datatype1.first = 1;
header.datatype1.type = 2;

writeInFile(dlt_file,header);

readOutFile(dlt_file);

fclose(dlt_file);
return 1;
}
 
Hi,

er schreibt nicht weil der Funktionsaufruf "writeInFile" zwar ausgeführt wird aber er trotzdem nichts schreibt. Ich denke mal, dass es an der Übergabe der Parameter liegt.

Vielleicht noch ein Tipp. Ich würde die Werte lieber Zeilenweise in eine Datei schreiben. Dies macht das spätere einlesen einfacher. Also lieber "fprintf" und "fscanf" benutzen.

Kann leider keinen Fehler bei der Übergabe sehen aber ich schau mir das nochmal genauer an. Vielleicht hilft dir erstmal der Tipp.
 
Hi,

er schreibt nicht weil der Funktionsaufruf "writeInFile" zwar ausgeführt wird aber er trotzdem nichts schreibt. Ich denke mal, dass es an der Übergabe der Parameter liegt.

Vielleicht noch ein Tipp. Ich würde die Werte lieber Zeilenweise in eine Datei schreiben. Dies macht das spätere einlesen einfacher. Also lieber "fprintf" und "fscanf" benutzen.

Kann leider keinen Fehler bei der Übergabe sehen aber ich schau mir das nochmal genauer an. Vielleicht hilft dir erstmal der Tipp.

Danke,
erledigt. Den Zeiger muss man auf Dateianfang setzen. Oder sauberer vorher die Datei schliessen und dann zum Lesen öffnen.
Bahanfar
 
Zurück