Problem mit char*



  • Hi,

    ich hab folgendes Problem, beim einlesen bzw. auslesen in/aus einer Datei, mit char pointern.

    Hier lese ich den Wert des char* in die Datei ein.

    #include <iostream>
    #include <fstream>
    using namespace std;
    
    typedef struct STest
    {
            char* test;
    } sTest,*pTest;
    
    int main()
    {
      sTest pt;
      int len = 0;
      fstream file;
    
      pt.test = "Hallo";
    
      file.open("test.dat",ios::out | ios::binary);
    
      if( file.is_open() )
      {
              file << strlen(pt.test);
              file.write(pt.test,strlen(pt.test));
      }
    
      file.close();
      return 0;
    }
    

    Aus Testzwecken hab ich nachdem ich den oberen Teil ausgeführt habe das einlesen auskommentiert( von pt.test = "Hallo"; bis file.close(); ).
    Ausgelesen wir dann folgendermaßen.

    #include <iostream>
    #include <fstream>
    using namespace std;
    
    typedef struct STest
    {
            char* test;
    } sTest,*pTest;
    
    int main()
    {
      sTest pt;
      int len = 0;
      fstream file;
    
      file.open("test.dat",ios::in | ios::binary);
    
      if( file.is_open() )
      {
              file >> len;
              pt.test = new char[len];
              file.read(pt.test,len);
              cout << "Test: " << pt.test << endl;
      }
      else
              cout << "FEHLER!!" << endl;
    
      file.close();
    
      system("PAUSE");
      return 0;
    }
    

    So, mein Problem wäre jetzt folgendes:
    Bei der Ausgabe gibt mir das ganze mit
    VC++ .NET 2002 folgendes aus
    Hallo²²²²²`y`y`y usw. also noch zusätzliche zeichen
    Borland C++ BuilderX
    Hallo«C
    Nur Dev-CPP (verwendet den gcc compiler) gibt
    Hallo
    ohne anhängsel aus.

    An was liegt das?
    Denn das nervt mich langsam.

    Danke für die Hilfe

    MFG
    Sebastian


Log in to reply