Bonjour,

j'essaye d'ouvrir un fichier en lecture + écriture sous windows 7 avec le code suivant :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 ?