Bonjour,
J'essaye d'écrire un lecteur de fichier afin de faciliter la rentré d'information et leur modification.
Seulement il y a un élément qui m'échappe et que je n'arrive pas à élucider.
mon code :
Et dans le fichier Animation.script :
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 #include <stdio.h> #include <stdlib.h> #include <string.h> int main(int argc, char* argv[]){ FILE* FScript = NULL ; char command[32] ; char nom[32] ; //ouverture du fichier if ((FScript = fopen("Animation.script","r")) == NULL){ printf("Erreur ouverture de fichier impossible \n"); exit(1); } //saute les caracteres jusqu'au ':' puis le saute à son tour fscanf(FScript,"%s %*[^:] %*[: ]",command); //test si le premier mot est nom if (strcmp(command,"nom") == 0) { fscanf(FScript,"%50[^\n]",nom); //si c'est le cas on scan le nom se situant apres les deux points. printf("nom : %s \n",nom); } else { printf("Erreur commande \n"); exit(1); } return EXIT_SUCCESS ; }
Resultat apres compilation :
Code : Sélectionner tout - Visualiser dans une fenêtre à part nom : le chat botte
Le problème est que mon Fscanf est sensé avoir sauté les deux points. Mais pourtant ce n'est pas le cas. De plus si je transforme ma ligne dans Animation.script en :$ ./test.out
nom : : le chat botte
Alors comme par magie, la variable nom me renverra bien ce qu'il y a après les deux points.
Code : Sélectionner tout - Visualiser dans une fenêtre à part nom animation : le chat botte
Si quelqu'un pouvait m'aider et surtout m'éclaircir sur ce phénomène.
Merci.
Partager