[c] ignore les lignes d'un fichier

ignore les lignes d'un fichier [c] - C - Programmation

Marsh Posté le 02-06-2004 à 12:06:24    

bon voila je voudrais ignorer les lignes ne possédant pas de chiffres
J'ai donc pondu ça (pitié je sais c moche...) :
 
[cpp]
  // on ne prend en compte que les lignes avec des chiffres
  do {
    // lecture d'une ligne
    fgets(ligne, 255, fichierTraiter);
    printf("ligne lue : %s",ligne);
  } while ((ligne[0]>=48) && (ligne[0]<=57));
[cpp]
 
le problème c qu'il m'ignore pas les lignes
quand je fais un printf de ligne il m'affiche bien :
$ DATA = VECTOR
et il sort de la boucle (or il ne devrait pas)


---------------

Reply

Marsh Posté le 02-06-2004 à 12:06:24   

Reply

Marsh Posté le 02-06-2004 à 13:00:05    

Si tu regardes bien, c'est ton algorythme qui n'est pas bon.

Reply

Marsh Posté le 02-06-2004 à 13:12:07    

déjà il faut boucler sur fgets != NULL (et là la limitation de taille peut être un problème). après si ton but c'est de sauter chaque ligne ne commençant pas pas un chiffre, il faut que tu casses ta boucle dès que isdigit(ligne[0]) est bon
 

Code :
  1. #include <stdio.h>
  2. #include <ctype.h>
  3. int main()
  4. {
  5.   char ligne[81];
  6.   while(fgets(ligne, sizeof ligne, stdin) != NULL
  7.         && isdigit(ligne[0]))
  8.     {
  9.       /* NOOP */
  10.     }
  11.   fprintf(stdout, ligne);
  12.   while(fgets(ligne, sizeof ligne, stdin) != NULL)
  13.     {
  14.       fprintf(stdout, ligne);
  15.     }
  16.   return 0;
  17. }

par exemple

Reply

Marsh Posté le 02-06-2004 à 13:41:55    

mici c surtout le isdigit qui me manquait. le reste c'était bon. mais c vrai que le fgets != NULL je l'avais pas mis car bon c'était juste fait pour ignorer les premières lignes (mais bon faut pas oublier les cas ou le fichier seraient vide --> on est jamais à l'abri d'une erreur !).
mici monsieur taz. je retourne à ma structure :(


---------------

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed