[C] lecture de fichier

Fermé
mélina - 9 janv. 2006 à 00:50
 mélina - 9 janv. 2006 à 14:02
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;
}
   
A voir également:

4 réponses

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
Misdrhaal Messages postés 49 Date d'inscription lundi 9 mai 2005 Statut Membre Dernière intervention 23 février 2006 16
9 janv. 2006 à 12:44
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
Misdrhaal Messages postés 49 Date d'inscription lundi 9 mai 2005 Statut Membre Dernière intervention 23 février 2006 16
9 janv. 2006 à 12:57
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
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