Bonjour

J'essaye de lire un fichier qui contient des donnees, et mon programme devra lire le contenu et stocker le contenu lu dans des variables de type char. Mon code maintenant ne commence a stocker qu'a partir de la troisieme ligne. Je ne vois pas ou est le probleme.

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
 
int parser (void) {
  int n = 0;
  char buffer [ 81 ];
  char arg[50][9]; // tableau pour les donnees
  /* Verifier le succes de l'ouverture */
  if ( ( sf = fopen ( fname, "r" ) ) == NULL ) {
    fprintf ( stderr, "MAKELIST: Unable to open %s!\n", fname ); 
    exit ( 1 );
    }
 
  /* Lecture du fichier */
  fgets ( buffer, 81, sf ); 
   while ( ! feof ( sf ) ) {  
    fputs ( buffer, stdout );
 
    /* si un des mots contenus dans le fichier est "add", chercher 
        si un deuxieme mot dans la meme ligne existe, 
        puis le stocker lui aussi */
 
    if (strcmp(arg[n],"add")){
        fscanf(sf, "%s %s\n", arg[n], arg[n+1]); 
        }
 
    // Stocker tout les mots tant que la while loop s'execute
    fscanf(sf, "%s\n", arg[n]); 
 
    // imprimer ce qui a ete stocker pour tester
    printf("%s\n", arg[n]);
    fgets ( buffer, 81, sf );
    n++; // incrementer le compteur
    }
    fclose ( sf ); //fermer le fichier
  return 0;
}
Un exemple de fichier sf

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
un
deux
add qqchose
trois
quat
L'output de la ligne printf("%s\n", arg[n]);

Normalement, l'output devrait etre le meme que le fichier sf.

Comment faire pour ne pas avoir le retour de la ligne quand add est lue.

Pourquoi un et deux n'ont pas ete lue et imprimee ?

PS: la variable fname a ete declare en tant que static (pour une utilisation ulterieur dans d'autres fonctions).

Merci de votre aide.