wiederspruch bei fopen...



  • hallo,

    hier mal ein kleines programm.

    int main( void )
    {
        FILE    *pFile          = NULL;
        char    szBuffer[40]    = { 0 };
        char    *pNull          = 0;
        int     nAnzahlZeichen  = 0;
    
        pFile = fopen( DATEINAME , "w+" );
    
        if( !pFile )
        {
            fprintf( stderr , "Fehler, Datei konnte nicht erstellt werden\n");
            return -1;
        }
    
        printf("Text eingeben <");
        fgets( szBuffer , 39  , stdin );
    
        if( ( pNull = strchr( szBuffer , '\n' ) ) != NULL )
            *pNull = '\0';          // fgets() liest ohne '\0' , muss manuel drangehangen werden
    
        fputs( szBuffer , pFile );
        fseek( pFile , 0 , SEEK_END );      // setze filepointer auf das ende
        nAnzahlZeichen = ftell( pFile ) + 1;    // zaehle die anzahl der zeichen in der datei
        fseek( pFile , 0 , SEEK_SET );      // setze filepointer auf den anfang
        szBuffer[0] = '\0';         // damit der Buffer auch leer ist
        fgets( szBuffer , nAnzahlZeichen  , pFile );
        printf("\n%s\n",szBuffer );
    
        fclose( pFile );
        return 0;
    }
    

    alles geht einwandfrei, nur was mich entwas stutzig macht ist folgendes:
    ich oeffne doch die datei mit fopen( DATEINAME ,"w+" ) warum kann ich da trotzdem lesen ?

    mfg anre



  • du sagst ja w**+**

    nur "w" waere schreiben
    nur "r" ist lesen
    aber + bedeutet beides.

    schau mal in deine Doku, da wird das sicher genau beschrieben sein welcher Modus was macht.



  • eigentlich hätten sie doch "rw" für beides nehmen können. Haben sie aber nicht, das es verschiedene Möglichkeiten gibt: r+ ist lesen/schreiben einer existierenden Datei, bei w+ allerdings wird die Datei beim öffnen geleert, so sie existiert! a+ gibts auch ...



  • ok, danke für die schnelle hilfe. 😃


Anmelden zum Antworten