Ecriture impossible avec fopen r+ sous windows 7
Bonjour,
j'essaye d'ouvrir un fichier en lecture + écriture sous windows 7 avec le code suivant :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35
| #include <stdio.h>
int main( void )
{
char filename[] = "data";
FILE *fp = NULL;
if( (fp = fopen( filename, "w" )) )
{
fprintf( fp, "abcd" );
fclose( fp );
}
if( (fp = fopen( filename, "r+" )) )
{
int c = 0;
c = fgetc( fp );
printf( "%c ", c );
fputc( 'x', fp );
fflush( fp );
fseek( fp, -1, SEEK_CUR );
c = fgetc( fp );
printf( "%c ", c );
rewind( fp );
while( (c = fgetc( fp )) != EOF )
{
printf( "%c ", c );
}
}
return 0;
} |
Or, il m'affiche a d a b c d au lieu de a x a x c d.
Si j'envoie l’exécutable chez une autre personne avec win7, même souci.
J'utilise le compilo mingw4.8.1 tdm-2 (fourni avec codeblocks).
J'ai donc plusieurs questions:
— est ce que ce code donne la même chose chez tous les utilisateurs de Windows ? Le souci viendrait peut-être de mon compilo ?
— cela pourrait être lié a la « sécurité » des dossiers de Win7? J'ai bien viré tous les lectures seules, etc. mais on ne sait jamais…
— si je fais un exécutable fonctionnel du coup, ça marchera partout ?
Merci d'avance.
Edit:
j'ai testé avec une autre version du compilo, ça ne marche pas non plus. Le souci viendrait donc de Windows ?