Programme en C qui affiche n lignes demandés

Programme en C qui affiche n lignes demandés - C - Programmation

Marsh Posté le 19-03-2004 à 19:18:09    

Je dois écrire un programme qui prend comme paramètres les noms des fichiers et un entier positif n et afficher les n (ou dix si n n?est pas donné) dernières lignes de chaque fichier spécifié.
 
Bon, le programme ouvre les fichiers, lit ligne par ligne et affiche le nom du fichier suivi de ses dernières lignes et fermer les fichier.
 
Je suis comme vraiment perdu..
 
 

Code :
  1. int main (int argc, char *argv[])
  2. {
  3.   FILE *fich *n_lignes ;
  4.    int n  = 10;
  5.   if ((fich = fopen (argv[1], "r" )) == NULL) {
  6.     printf ("Fichier impossible à ouvrir\n" ) ;
  7.     exit (1) ;
  8.   }
  9. if ((argv == 0)
  10. printf (fich, n)
  11. Sinon
  12. while
  13. printf (fich, n_lignes)
  14. fclose (fich)

Reply

Marsh Posté le 19-03-2004 à 19:18:09   

Reply

Marsh Posté le 19-03-2004 à 19:21:25    

utilise fgets (ou getline quitte à l'écrire toi même)
 
faut faire un FIFO borné.
 
chaque fois que tu lis une ligne, tu la rajoute à la fin, et tu effaces la plus vieille de telle sorte que tu mémorise uniquement les dix dernireès lignes parcourues. arrivés en fin de fichier, tu affiches les lignes stockées

Reply

Marsh Posté le 19-03-2004 à 19:23:02    

ouf...

Reply

Marsh Posté le 20-03-2004 à 03:04:46    

Bon, je réussis à lire le fichier....reste à trouver comment passer le paramètres d'afficher n lignes
 

Code :
  1. #include <stdio.h>
  2. main (int argc, char *argv[])
  3. {
  4. int i, c;
  5. for (i=1; i<argc; i++)
  6. {
  7. FILE *f;
  8. f = fopen (argv[i], "r" );
  9. while ((c = fgetc (f))!=EOF)
  10. fputc (c, stdout);
  11. fclose (f);
  12. }
  13. fflush (stdout);
  14. exit (0);
  15. }

Reply

Marsh Posté le 20-03-2004 à 03:39:52    

Bon, voilà qu'il me sort une erreur de segmentation
 

Code :
  1. #include <stdio.h>
  2. main (int argc, char *argv[])
  3. {
  4. int i;
  5. int c  = 10;
  6. for (i=1; i<argc; i++)
  7. {
  8. FILE *f;
  9. f = fopen (argv[i], "r" );
  10. while ((c = fgetc (f))!=EOF)
  11.   if (argc)
  12.     {
  13.         int   a;
  14.          a = atoi(*argv);
  15.       if (a < 0)
  16.         {
  17.           c = -a;
  18.           argc--;
  19.           argv++;
  20.         }
  21. else((c == '\n') && !(--c)
  22.     }
  23. fputc (c, stdout);
  24. fclose (f);
  25. }
  26. fflush (stdout);
  27. exit (0);
  28. }


Message édité par _Faust_ le 20-03-2004 à 03:51:02
Reply

Marsh Posté le 20-03-2004 à 11:38:46    

C'est quoi cette ligne ?
else((c == '\n') && !(--c)
 
Il manque pas quelque chose là ?

Reply

Sujets relatifs:

Leave a Replay

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