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


Log in to reply