[C] Variable in Binär-Datei Speichern

posi90

Erfahrenes Mitglied
Hallo,

Ich schreibe an einem Komprimierungsprogramm mit MVC++ und habe ein paar Fragen zu fread und fwrite.

Eine Datei soll folgendermaßen aussehn:

Größe des folgenden Datenblocks (unsigned int)
Datenblock mit der obrigen Größe
Größe des folgenden Datenblocks (unsigned int)
Datenblock mit der obrigen Größe
...

Eine Variable vom Typ (unsigned long) muss also in die Datei geschrieben werden, wie macht man das?

Code:
	unsigned long i=11,z;
	char a[11]="Datenblock",b[11];
	FILE*f;

	f=fopen("datei.dat","wb");//öffnen der Datei im binären Schreibmodus

	fwrite(&i,1,sizeof(unsigned long),f);//Schreibe Variable i in die Datei
	fwrite(&a,1,11,f);//Schreibe den Datenblock in die Datei
	
	fseek(f,0,0);//Dateipointer zum Lesen auf Anfang setzen

	fread(&z,1,sizeof(unsigned long),f);//Lies von der Datei die vorherige Variable i auf Variable z ein
	printf("z=%d\n",z);//Ausgabe: z sollte dann (11ul) ergeben, bekomme irgendeine Speicheraddresse

	fread(&b,1,z,f);//Lies den Datenblock aus der Datei auf Variable b ein
	printf("%s",b);//Hier kommen fast das Richtige heraus

	fclose(f);

Ausgabe:

Ausgabe.jpg.html


Kann mir bitte jemand helfen?

mfg. Poseidon
 
Der Fehler ist, dass wb nicht zum Lesen gedacht ist, nur zum rein schreiben.
Entweder statt fseek zumachen und mit rb wieder aufmachen oder "wb+" nehmen.

Gruß
 

Neue Beiträge

Zurück