Bonjour à tous,
Je suis en train de réaliser un speudo-compilateur et donc j'écris dans des fichiers.
Actuellement j'utilise cette fonction:
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...
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; }
J'ai donc créée une autre fonction:
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) !
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; }
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.
Partager