fwrite mach mit 2 Dimensionalen Array Probleme



  • Hab folgendes probiert

    for (int i = 0; i < zeile ; i ++) 
     { 
      for (int j = 0; j < spalte ; j++) 
      { 
    
       cout << neu [j][i]; 
       FILE *Satz; 
       Satz = fopen ("Coded.txt","wb"); 
       fwrite (neu[j][i],sizeof(neu),1,Satz); 
       fclose (Namenliste); 
    
      } 
     }
    

    funzt aber nicht. In neu steht ein satz wie z.b. "Hallo Welt" will den jetzt spaltenweiße in eine txt speichern



  • Ich kenne fwrite nicht, aber bist du dir sicher das du die Datei in jedem Schleifendurchlauf neu öffnen und schliessen willst.

    Mal abgesehen davon wird in C++ sowas wohl mit streams gemacht.

    EDIT:
    dazu gibt es auch was im FAQ:
    http://www.c-plusplus.net/forum/viewtopic.php?t=39469



  • 1. welche fehlermeldung bekommst du ?

    ---------------------------
    2. soweit ich weis gibt es den parameter "wb" nicht.
    r Öffnet eine Datei ausschließlich für Leseoperationen.

    w Erzeugt eine Datei für Schreiboperationen. Falls die Datei bereits existiert, wird sie überschrieben.

    a Öffnet eine Datei für Schreiboperationen. Falls die Datei bereits existiert, werden weitere Daten an das aktuelle Dateiende angehängt, ansonsten wird sie automatisch erzeugt.

    r+ Öffnet eine Datei für Lese- und Schreiboperationen. Die Datei muß bereits existieren.

    w+ Erzeugt eine neue Datei für Lese- und Schreiboperationen. Falls die Datei bereits existiert, wird sie überschrieben.

    a+ Öffnet eine Datei zum Lesen und Anhängen neuer Daten durch Schreiboperationen. Falls die Datei bereits existiert, bleibt ihr alter Inhalt erhalten, falls nicht, wird sie automatisch erzeugt.

    ---------------------------
    3. wie schon oben angemerkt solltest du evtl FILE *Satz und das datei öffnen vor der schleife machen. ansonnsten musst du auf jeden fall den parameter "a" verwenden, da er sonnst nicht am ende anfügt.

    ---------------------------
    4. sizeof(neu) ist gleichbedeutend mit sizeof(char 😉 und du willst ja nicht den pointer abspeichern sondern den inhalt. von daher solltest du sizeof(char) verwenden.

    ---------------------------
    5. du solltest auch die datei die du öffnest wieder schließen und nicht "Namenliste"

    So sollte es gehen:

    FILE *pfileSatz
    int i, j;
    
    pfileSatz = fopen("Coded.txt","w");
    for(i = 0; i < zeile; i++)
    {
      for(j = 0; j < zeile; j++)
      {
        fwrite (neu[j][i], sizeof(char), 1, pfileSatz);
      }
    } 
    fclose (pfileSatz);
    


  • Hallo,

    ulath schrieb:

    2. soweit ich weis gibt es den parameter "wb" nicht.

    doch, diese Kombination gibt es. Windows z.B. unterscheidet Text- und Binärausgabe, mit "b" wird binär geschrieben.

    In diesem Falle ist das "b" allerdings nicht angebracht, da offensichtlich eine Textdatei geschrieben werden soll.

    MfG



  • Alles klar danke es hat gefunzt und zwar mit

    fwrite (&neu[j][i], sizeof(neu), 1, pfileSatz);
    


  • sTyL3X schrieb:

    Alles klar danke es hat gefunzt und zwar mit

    fwrite (&neu[j][i], sizeof(neu[j][i]), 1, pfileSatz);
    

    ooops sorry bin versehentlich auf zitieren gegangen


Anmelden zum Antworten