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.