Probleme mit zeilemweisen einlesen



  • 😕 Ich habe ein Hangman geschrieben das sehr gut funktioniert.
    Nun wollte ich den Code erbessern.
    Beim einlesen der Worter habe ich nun ein kleines Problem.

    <source>

    #include <iostream>
    #include <fstream>

    #include <string.h>

    using namespace std;

    class GetWoerter{
    public:
    GetWoerter(){
    ifstream in("c:\\test.txt");
    char *ch;
    in.getline(ch,200);
    cout<<ch;
    }
    };

    int main(){
    GetWoerter I;
    getchar();
    return 0;
    }

    </source>

    Ich weiß nicht was falsch ist.
    Das Programm lässt sich zwar compilieren aber es erscheint immer der Problembericht.
    Kann mir jemand helfen?
    Danke schon mal im voraus!!!



  • Das Programm lässt sich zwar compilieren aber es erscheint immer der Problembericht.

    Welcher Problembericht?
    Zu dem Code sag ich lieber mal nichts...

    Desweiteren solltest du die Klasse std::string benutzen (nur um dein Leben zu vereinfachen ;))

    Ansonsten so ließt du (sequentiell) aus Dateien: (Ungetestet)

    #include <iostream>
    #include <fstream>
    #include <string>
    using namespace std;
    
    int main(int argc, char* argv[])
    {
         if(argc != 2)
         {
               cout << "\n Usage: program.exe infile\n";
               return -1;
         }
         ifstream in(argv[1]);
         if(in.is_open())
         {
                string s;
                while(getline(in, s))
                     cout << s << endl;
         }
         return 0;
    }
    

    btw: Codetags benutzen...

    Caipi



  • Architekt schrieb:

    char *ch;
    ...
    Ich weiß nicht was falsch ist.

    Wohin zeigt ch?



  • Die letzte Antwort hat das Problem eigentlich schon gelöst, aber
    ich formuliere das mal ein wenig aus. ^^
    Ich vermute mal ch zeigt ins Nirvana, du musst vorher Speicher reservieren!
    Ansonsten zeigt ch wohl auf die in getline temporär erzeugten Daten die nach Durchlaufen dieser Funktion ungültig werden! Deswegen bekommst du auch diesen Fehler.
    Um das Problem also zu lösen nimm statt einem einfachen char-pointer einfach ein char-Array:

    char ch[256];
    

    Den Kommentar zum Code spare ich mir auch. :p


Anmelden zum Antworten