[C] lecture de fichier

bonsoir,

J'ai un petit soucis je n'arrive pas à afficher le contenu d'un fichier voici le code si quelqu un peut m'aider ca serait gentil.
merci

/* fichier1.c */
#include <stdio.h>
#include<string.h>
int main (int argc, char **argv)

{

   /* ouverture du fichier en mode texte */
   FILE *fp = fopen ("toto1.c", "r");

   /* L'ouverture du fichier est-elle realisee ? */
   if (fp != NULL)
   {
      /* definition d'un tableau de char destine a recevoir la ligne
       * La taille est arbitraire. Elle doit etre cependant adaptee * aux besoins courants.
       * Pour les grandes tailles (disons > 256 char),
       * il est preferable d'utiliser une allocation dynamique.
       */
      char ligne[32];

      /* lecture de la premiere ligne */
    while(  fgets (ligne, 32, fp));
    
      /* Affichage de la premiere ligne */
     printf ("1: %s\n",ligne);
      
      /* lecture de la deuxieme ligne */
      fgets (ligne, 3, fp);

      /* Affichage de la deuxieme ligne */
      printf ("2: %s\n", ligne);

      /* Fermeture du fichier */
      fclose (fp);
   }
   else
   {
      printf ("Erreur d'ouverture du fichier\n");
   }
   return 0;
}
   

4 réponses

  1. un erreur de ma part c'est 32 et non pas 3, mais ca ne resout trjs pas le prb

    /* lecture de la deuxieme ligne */
    fgets (ligne, 32, fp);
    1. Je mettrais plutot ca :

      /* fichier1.c */
      #include <stdio.h>
      #include<string.h>
      
      int main (int argc, char **argv)
      
      {
      
         /* ouverture du fichier en mode texte */
         FILE *fp = fopen ("toto1.c", "r");
      
         /* L'ouverture du fichier est-elle realisee ? */
         if (fp == NULL)
         {
      
         }
      
            /* definition d'un tableau de char destine a recevoir la ligne
             * La taille est arbitraire. Elle doit etre cependant adaptee * aux besoins courants.
             * Pour les grandes tailles (disons > 256 char),
             * il est preferable d'utiliser une allocation dynamique.
             */
            char ligne[32];
      
            /* lecture de la premiere ligne */
          while(  fgets (ligne, 32, fp));
          
            /* Affichage de la premiere ligne */
           printf ("1: %s\n",ligne);
            
            /* lecture de la deuxieme ligne */
            fgets (ligne, 3, fp);
      
            /* Affichage de la deuxieme ligne */
            printf ("2: %s\n", ligne);
      
            /* Fermeture du fichier */
            fclose (fp);
         }
         else
         {
            printf ("Erreur d'ouverture du fichier\n");
         }
         return 0;
      }
      1. Je mettrais plutot ca : (le premier message est à supprimer, parti trop vite)

        /* fichier1.c */
        #include <stdio.h>
        #include<string.h>
        
        int main (int argc, char **argv)
        
        {
           FILE *fp = fopen ("toto1.c", "r");
        
        // Test ouverture du fichier
           if (fp == NULL)
           {
              printf ("Erreur d'ouverture du fichier\n");
             exit(1);   
           }
        
        //Fichier ouvert
        
              char ligne[32];
              int i = 1;
           
              while( fgets(ligne, sizeof(ligne), fp) != NULL )
             {
                 printf ("%d: %s\n",i,ligne);
                 i++;
              }
        
        // Teste si fgets a rencontré une erreur
             if( !feof(fp) )
              {
                 printf("erreur rencontrée lors de la lecture");
                 exit(1);
              }
        
        //Teste Fermeture
             if(fclose(fp) != 0)
             {
               printf("Impossible de fermer le flux");
                exit(1);
             }
        
        //Tout s'est bien passé
           return 0;
        }
        1. Je vous remercie pour votre réponse, mais je n 'arrive tout de même pas afficher le contenu de mon fichier tot1.c

          comment faire?