 |
19.05.2003, 19:18
|
#1 (permalink)
| | Nachtduscher
Registriert seit: 22.01.2002
Beiträge: 12.569
| 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 | Ihr seid ja nur neidisch, weil ich der einzige bin, zu dem die leisen Stimmen sprechen! TweakPC IRC Channel: #tweakpc im Quakenet (irc.quakenet.org) Satzzeichen folgen direkt hinter einem Wort. Es ist kein Leerzeichen dazwischen! |
| |
20.05.2003, 14:52
|
#2 (permalink)
| | Overclocker
Registriert seit: 15.05.2003 Ort: München
Beiträge: 326
| 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. | | |
| |
20.05.2003, 16:35
|
#3 (permalink)
| | Nachtduscher
Registriert seit: 22.01.2002
Beiträge: 12.569
| 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. | | |
| |
20.05.2003, 18:33
|
#4 (permalink)
| | Extrem Performer
Registriert seit: 10.04.2002 Ort: Freiburg
Beiträge: 1.438
| 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 | | |
| |
20.05.2003, 18:46
|
#5 (permalink)
| | Nachtduscher
Registriert seit: 22.01.2002
Beiträge: 12.569
| 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);
} | | |
| |
20.05.2003, 18:56
|
#6 (permalink)
| | Extrem Performer
Registriert seit: 10.04.2002 Ort: Freiburg
Beiträge: 1.438
| 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);
} | | |
| |
20.05.2003, 19:26
|
#7 (permalink)
| | Nachtduscher
Registriert seit: 22.01.2002
Beiträge: 12.569
| 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? | | |
| |
20.05.2003, 19:33
|
#8 (permalink)
| | Extrem Performer
Registriert seit: 10.04.2002 Ort: Freiburg
Beiträge: 1.438
| 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 | | |
| |
20.05.2003, 19:38
|
#9 (permalink)
| | Nachtduscher
Registriert seit: 22.01.2002
Beiträge: 12.569
| ok danke.... aus dem hilfebeispiel hab ich das irgendwie nicht ersehen können | | |
| |  | |
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1) | | | | Themen-Optionen | | | | Ansicht | Thema bewerten | Linear-Darstellung | |
Forumregeln
| Es ist dir erlaubt, neue Themen zu verfassen. Es ist dir erlaubt, auf Beiträge zu antworten. Es ist dir nicht erlaubt, Anhänge hochzuladen. Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten. HTML-Code ist aus. | | | Alle Zeitangaben in WEZ +1. Es ist jetzt 14:17 Uhr. | | |