Wieso wird die Variable nicht verwendet!



  • Hallo
    Ich hab ein Progrmm geschrieben was mit Listen So lange IDs und
    Pws einliest und spaeter Dateien erstellt und da die Ids und Pws
    reinschreibt. Jetzt wird die Variable node aber nicht verwendet !
    Ich arbeite auf Linux und habe neu mit den ListenNodes angefangen.
    Hier der Code :

    #ifndef REGI_H_INCLUDED
    #define REGI_H_INCLUDED
    #include <iostream>
    #include <fstream>
    #include <string>
    #include <sys/stat.h>
    #include <sys/types.h>
    #include <termios.h>
    using namespace std;
    
    struct TListenKnoten
    {
        string data;
        string data2;           // simuliert die Daten
        TListenKnoten *next; // Verknüpfung zum Nachfolger
    };
    
    TListenKnoten *Anker = 0; // Anfang der Liste
    
    int getch() {
        static int ch = -1, fd = 0;
        struct termios neu, alt;
        fd = fileno(stdin);
        tcgetattr(fd, &alt);
        neu = alt;
        neu.c_lflag &= ~(ICANON|ECHO);
        tcsetattr(fd, TCSANOW, &neu);
        ch = getchar();
        tcsetattr(fd, TCSANOW, &alt);
        return ch;
    }
      void makelibary(string name1)
    {
        name1 = "Acc/" + name1;
        mkdir(name1.c_str(), 0777);
    }
    
     string makeDats (string name2)
    {
        name2 = "Acc/"+name2+"/"+name2;
        return name2;
    }
    
    #endif // REGI_H_INCLUDED
    
    //main.cpp
    #include "regi.h"
    int main()
    {
        int option;
        string Inhalt;
        string inhalt2;
        TListenKnoten *node, *old;
        do
        {
            cout<<"1) Register "
              "2) Exit";
              cin>>option;
              if(option==2) break;
    
            cout<<"ID : ";
            cin>>Inhalt;
            cout<<"PW : ";
            cin>>inhalt2;
    
            makelibary(Inhalt);
            TListenKnoten *node = new TListenKnoten;
            node->data = Inhalt;
            node->data2 = inhalt2;  // Besetze die Daten
            node->next = Anker; // Hänge die bisherige Liste an
            Anker = node;
    
        }while(option==1);
    
            while (Anker)    // ungleich 0! Die Liste ist nicht leer!
        {
            old = Anker;         // Sichere zum späteren Löschen
            Anker = Anker->next;
            ofstream fout(makeDats(Anker->data).c_str());
            fout<<Anker->data<<Anker->data2<<endl; // Ziehe nächstes Element nach vorn
            delete old;          // Lösche das ausgelesene Element
        }
        return 0;
    }
    

    Ich bin sehr dankbar wenn ihr mir auch Verbesserungsvorschlaege gibt .

    Grüsse



  • Weil du node (das in main.cpp, Zeile 😎 im weiteren Verlauf nicht mehr verwendest. In der Schleife legst du dann ein weiteres "node" an, welches das aus dem Scope darüber verdeckt - in der Schleife wird das "node" aus Z.22 verwendet.



  • Stimmt das ging schnell Danke ! Jetzt ist es aber so :
    wenn ich z.B 3 mal id pw eingib und dannah 2 drück also exit kommt
    Segmantation fault!

    Die ersten zwei machen das was ich will der dritte nicht mehr.



  • In main.cpp:35 dereferenzierst Du Anker, nachdem Du vorher Anker=Anker->next machst. Irgendwann ist Anker->next aber NULL... *bumm*



  • Danke ! Hat geklappt habt ihr noch Verbesserungsvorschlaege ?



  • Bitte.

    AirTrake schrieb:

    Verbesserungsvorschlaege ?

    Ja, hör' auf, zu plenken. 😉



  • plenken? Hör ich zum ersten mal hört sich aber cool an ^^



  • Sieht aber scheiße aus und zerstört insbesondere im Web leicht und effektiv das Schriftbild.



  • Hmm ein falsch gesetzter Leerzeichen wenn das
    mal nicht wichtig ist. 😋


Anmelden zum Antworten