[C/C++] Aus Dateien lesen

Dieses Thema im Forum "Programmierung & Entwicklung" wurde erstellt von asdrexit, 27. November 2007 .

Schlagworte:
  1. 27. November 2007
    Ich versuche die ganze Zeit eine Datei einzulesen aber bekomme es nicht hin. Der Buffer in den geschrieben werden soll ist immer leer.

    Hier mein Source(erklären bringt denk ich mal nicht viel):
    Code:
    [COLOR=Blue]//Die wichtigen Funktion meiner Klasse:
    //m_file ist vom Typ fstream;[/COLOR]
    
    [COLOR=Blue]//Constructor[/COLOR]
    CFileStream::CFileStream(char const *filename)
    {
     m_LastError = CFS_OK;
     m_file.open(filename, std::ios::in|std::ios::out|std::ios::binary);
     if (m_file.is_open())
     {
     m_LastError = CFS_OK;
     m_file.seekg(0, std::ios::beg);
     }else {
     m_LastError = CFS_OPEN_ERROR;
     }
    }
    
    [COLOR=Blue]//Lese-Funktion[/COLOR]
    int CFileStream::read(char &buf, int size)
    {
     m_file.read(&buf, size);
    }
    
    [COLOR=Blue] //Der Aufruf in der main:[/COLOR]
    int main()
    {
     CFileStream file(".\\TextFile");
     if (file.LastError() != CFS_OK)
     {
     cout << "Datei konnte nicht geoeffnet werden!\n";
     }else{
     cout << "Datei geoeffnet:\n";
     char buf;
     file.read(buf, 20);
     cout << buf << endl;
     }
     return 0;
    }
    
    
    
    Hoffe mir kann da jemand helfen. Thx schonmal.

    Sollte doch eig nichts Weltbewegenes sein, etwas aus na Datei zu lesen. Würde mir schon helfen, wenn ich wüsste wie man einfach nur x bytes aus einer Datei lesen kann und x bytes schreiben.
     
  2. 2. Dezember 2007
    AW: Aus Dateien lesen

    Hey!

    Du solltest die Datei evtl nicht im RW-Mode oeffnen.
    Hab damit nur schlechte Erfahrungen gemacht.

    Ich kanns leider nur auf die C-Art loesen:
    Code:
    // lesen
    FILE *stream = NULL;
    char buf[1024] = { 0 };
    stream = fopen ("file.txt", "r");
    fgets (buf, (1024 - 1), stream);
    printf ("%s", buf);
    fclose (stream);
    Code:
    // schreiben
    FILE *stream = NULL;
    stream = fopen ("file.txt", "w");
    fprintf (stream, "Hello World!\n");
    fclose (stream);
    Mfg,

    Kolazomai
     
  3. 2. Dezember 2007
    AW: Aus Dateien lesen

    Kann es sein das der Fehler in der "int CFileStream::read(char &buf, int size)"
    liegt; hier verbessert:

    Code:
    int CFileStream::read([B]char *buf[/B], int size)
    {
     m_file.read([B]buf[/B], size);
    }
    
    und halt der Entsprechende aufruf dazu wäre dann:
    Code:
    file.read[B](&buf[/B], 20);
    
    Jedoch sollte die Variable buffe auch eine Länge von min. 20 Bytes haben:
    Code:
    char buf[20];
    
    Müsste fünktionieren nach meinem wissen, habe keine möglichkeit es auszutesten.
    Hoffe konnte helfen.

    Mfg Rushh0ur
     
  4. 2. Dezember 2007
    AW: Aus Dateien lesen

    Jap das stimmt. Bei char-Arrays solltest du mit Zeigern, nicht mit referenzen arbeiten

    Der Aufruf stimmt nicht. buf[0] ist quasi ein zeiger auf das gesamte Array. Deshalb muss man das ganze so aufrufen:

    Code:
    file.read(buf, 20);
    

    edit:
    Code:
     char buf;
     file.read(buf, 20);
    
    Wenn du das so machst, dann kannst du ja nur ein Zeichen einlesen. Wenn du 20 Zeichen einlesen willst, dann musst du auch ein char buf[20]; deklarieren
     
  5. 2. Dezember 2007
    AW: Aus Dateien lesen

    Dank euch. Werd es so umschreiben und gucken ob sich was tut.
     
  6. Video Script

    Videos zum Themenbereich

    * gefundene Videos auf YouTube, anhand der Überschrift.