Bonjour à tous,

Je suis en train de réaliser un speudo-compilateur et donc j'écris dans des fichiers.
Actuellement j'utilise cette fonction:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
 
bool write_in_file(char* filename, char* text)
{
    FILE *thefile;
    thefile = fopen(filename, "a+");
    if (thefile == NULL)
    {
        return false;
    } else {
        fprintf(thefile, text);
        fclose(thefile);
    }
    return true;
}
elle fonctionne parfaitement mais mon problème c'est que je n'écris pas tout d'un seul coup dans le fichier, du coup, il s'ouvre, se ferme, se réouvre, se referme...
J'ai donc créée une autre fonction:
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
36
37
38
 
char* oldfile = "";
FILE *filetowrite = NULL;
 
bool write_in_file(char* filename, char* text)
{
    if (strcmp(filename, oldfile) != 0)
    { 
        if (filetowrite != NULL)
        {
            printf("Close file !!!\n"); 
            fclose(filetowrite);
            oldfile = filename;
        } else {
            oldfile = filename;
        }
    }
 
    if (filetowrite == NULL)
    {
        printf("Open file !!!\n");
        filetowrite = fopen(filename, "a");
        oldfile = filename;
        if (filetowrite == NULL)
        {
            return false;
        }
    }
 
    printf("Write in file !!!\n");
    fprintf(filetowrite, text);
 
 
    printf("Filename: %s\n", filename);
    printf("Oldfile: %s\n", oldfile);
 
    return true;
}
qui me laisse le fichier ouvert et écrit dedans, du moins il fait semblant, car si les printf sont corrects, il écrit juste une fois dans un fichier puis plus rien (dans le fichier courant ou dans les autres) !

Ma question est donc, peut-on laisser un FILE ouvert comme je le fais ?
Voyez-vous un problème dans mes "if" ?

Je vous remercie d'avance pour vos réponses,
Cordialement,
Nicolas.