Computer Hardware Forum - TweakPC

Computer Hardware Forum - TweakPC (https://www.tweakpc.de/forum/)
-   Programmiersprachen (https://www.tweakpc.de/forum/programmiersprachen/)
-   -   struct in datei speichern (https://www.tweakpc.de/forum/programmiersprachen/8539-struct-in-datei-speichern.html)

_Smash_ 19.05.2003 19:18

struct in datei speichern
 
hallo,

in C will ich ein komplettes struct in eine datei speichern....

ich hab da was mit fwrite gefunden, aber daraus werde ich nicht schlau.

weiss da jemand was?

danke schonmal

TzA 20.05.2003 14:52

Soweit ich weiß ist doch ein struct sowas was später in C++ mal ne Klasse wird (also ein komplett eigener Typ), ich hab aber grade gestern abend in nem C/C++-Buch gelesen, dass fwrite() nur Strings, Interger und Floats behandeln kann. Das heißt du müsstest dir ne Funktion schreiben, die alle Variablen des struct z. B. jeweils in ne eigene Zeile speichert, und eine, die sie so wieder einliest.

_Smash_ 20.05.2003 16:35

c++ weiss ich nix von

aber struct ist im prinzip ne ansammlung verschiedener typen in einerm typ.
aber darum gehts ja nicht.
es geht nur drin, daß ich das eben alles in einem wisch abspeichern kann, das geht auch mit fwrite, weil man da unter anderem ne bestimmte bytelänge angeben kann. nur kommt das irgendwie nicht so hin wie in der hilfe steht.

momentan läuftd über ne schleife und fprintf, aber fwrite wäre eben eleganter.

Morbus 20.05.2003 18:33

was ist denn dein konkretes problem ? dann wärs leichter zu helfen;-)

mal ganz allgemeiner auszug aus der MSDN:

size_t fwrite( const void *buffer, size_t size, size_t count, FILE *stream );



;-9

mfg
morbus

_Smash_ 20.05.2003 18:46

hier ein relevanter auszug aus dem code:

[code]struct personaldaten
{
int satznummer;
char name [12];
char vorname [12];
int alter;
int postleitzahl;
char wohnort [12];
char strasse [20];
int nr;
double kontostand;
};

//Testdaten

struct personaldaten stud[20] =
{
{1, "Mueller", "Marcus", 21, 61169, "Friedberg",
"Kaiserstrasse ", 15, 4300.20},
{2, "Schulze", "Sven", 22, 35510, "Butzbach",
"Taunusstrasse ", 5, -111.50},
{3, "Schmidt", "Dennis", 20, 61169, "Friedberg",
"Saarstrasse ", 17, 566.70}
};
....
....
....

void speichern (int anzahl, struct personaldaten *personaldaten)
{
FILE* datei;


datei = fopen("narf.dat", "a");
fprintf(datei, "%i", anzahl);

GENAU HIER MÖCHETE ICH KEINE FPRINTF SCHLEIFE FÜR JEDEN EINZELNEN DATENSATZ, SONDERN DEN KOMPLETTEN SATZ IN EINEM WISCH SPEICHERN:

fclose(datei);



}[/code]

Morbus 20.05.2003 18:56

ich versteh dein problem nicht ganz. wie wärs mit

[code]void speichern (int anzahl, struct personaldaten *personaldaten) {
FILE* datei;

datei = fopen("narf.dat", "a");
fwrite(personaldaten,sizeof(personaldaten),1,datei);
fclose(datei);
}[/code]

_Smash_ 20.05.2003 19:26

hehe problem nicht erkannt aber die lösung geliefert...

ich kam mit dem parametern von fwrite nihct zurecht....
kannste vieleicht mal sagen wofür die 1 da steht?

Morbus 20.05.2003 19:33

wie oft du es in die datei reinschreibst ;-) ist nen bisschen unnötig, musste noch nie mehr als 1 mal was in ne datei schreiben ;-)

mfg
morbus

_Smash_ 20.05.2003 19:38

ok danke.... aus dem hilfebeispiel hab ich das irgendwie nicht ersehen können


Alle Zeitangaben in WEZ +1. Es ist jetzt 01:03 Uhr.

Powered by vBulletin® Version 3.8.10 (Deutsch)
Copyright ©2000 - 2026, vBulletin Solutions, Inc.
SEO by vBSEO 3.5.2 ©2010, Crawlability, Inc.