Datensätze ändern
-
Hi ihr alle,
Der Fall:
Ich habe eine Struktur
Die in der Struktur deklarierten Variablen werden gefüllt und in eine Datei geschrieben.
Jetzt möchte ich die Datei ein lesen(noch kein Problem) und eine Variable innerhalb der Datei verändern.
z.B
struct person
{
char name[20];
char v_name[20];
};in name ist Hund gespeichert und ich möchte es jetzt in Katze ändern.
Wie kann ich das bewerkstelligen?
Hoffe auf klare Antworten und bedanke mich schon mal im voraus?
MfG
Crazyplaya
-
struct person X; X.name = "Katze";
[ Dieser Beitrag wurde am 24.02.2003 um 18:51 Uhr von Cypher editiert. ]
-
Sorry ich vergass zu erwähnen das es sich dabei um bereits in einer Datei gespeicherte Datensätze handelt. Also ich habe vorher in einer Eingabe-Funktion den Namen eingegen und in eine Datei weggeschrieben.
ich habs schon mit einer hilfsvariablen probiert
scanf("%s", hilfsvariable);
structname.name=hilfsvariable;
fwrite(struct_zeiger,size(struct),1,dateizeiger);
oben stehendes funktioniert leider nicht
-
Achso, dann könntest du mit fread alle Datensätze aus der Datei wieder lesen, bis der gesuchte dabei ist, den ändern und alle wieder in die Datei reinschreiben, aber das ist ein bisschen umständlich.
-
X.name="Katze";
das ist doch quatsch!
strcpy(X.name,"Katze"); ist richtig
normalerweise ändert man ja nicht einmal den datensatz und dann interessiert man sich nicht mehr dafür...
ich bin also dafür, alle datensätze in eine linked list zu laden und beim beenden vom programm, oder wenn der user speichern will, alle datensätze wieder in die datei zu schreiben.
-
Aber
X.name="Katze";
geht doch auch oder?
-
kann u. U. gehn, bei best. Compilern oder wenn du
x.name = &("Hallo");
nimmst eig. immer. aber darauf sollte man sich nicht verlassen!!!
cu todo
-
Original erstellt von todo:
**kann u. U. gehn, bei best. Compilern oder wenn dux.name = &("Hallo");
nimmst eig. immer. ...**
Das ist mir neu. Bei meinem Compiler geht das nicht und ich habe jetzt auch keine Hinweise gefunden, dass das irgendwie legal (in ANSI C) wäre...
-
char[] undgleich char*
feld gegen zeiger
nur weil sich ein feld auch wie ein zeiger verhalten kann, sind sie noch lange nicht gleich.
und ein
char* s;
s="name";
mach etwas anderes als ein
char s[10];
strcpy(s,"name");wer sagt mir den unterschied?
-
Hi,
char* s;
s="name";
mach etwas anderes als ein
char s[10];
strcpy(s,"name");Hmmm...mal sehn, ob ich es zusammenbekomme:
char* s; s="name";
Irengendwo im Speicher steht die Konstante "name". s zeigt nun
auf den Anfang dieser Zeichenkette (auf die Speicherzelle in der 'n' steht).char s[10]; strcpy(s,"name");
Hier wird "name" in den Speicherbereich, der fuer s reserviert ist
kopiert. s zeigt nicht darauf, sondern s enthaelt die Zeichen-
kette.Richtig so? Hoffe doch ich hab ken Fehler gemacht *g*
mfg
v R