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 du

    x.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


Anmelden zum Antworten