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 :

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 ;
}
Et dans le fichier Animation.script :
Resultat apres compilation :
$ ./test.out
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 :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
nom animation : le chat botte
Alors comme par magie, la variable nom me renverra bien ce qu'il y a après les deux points.

Si quelqu'un pouvait m'aider et surtout m'éclaircir sur ce phénomène.

Merci.