[C] lecture de fichier

mélina -  
 mélina -
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. mélina
     
    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);
    0
  2. Misdrhaal Messages postés 49 Statut Membre 16
     
    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;
    }
    0
  3. Misdrhaal Messages postés 49 Statut Membre 16
     
    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;
    }
    0
  4. mélina
     
    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?
    0