baboye11 a écrit :
 
 Bonjour tout le monde , j'ai un problème pour manipuler les fichiers en langage C et je voudrais que vous m'aidez s'il vous plait.
   Ma fonction "lit_fichier", elle doit recevoir en parametre le nom du fichier à lire que j'ai stocké dans une chaine de caractères,puis effectuer des traitements.
   Dans ma fonction main(), j'appelle la fonction "lit_fichier" en lui passant la chaine de caractères qui contenant  le nom du fichier.
   Quand je compile ca marche, mais si j'exécute ca me signale une erreur de segmentation au niveau de la fonction (au niveau des parametres) et au niveau de "getline". Voici le programme (que j'ai réduit) :
         //Ma fonction lit_fichier
   int lit_fichier ( char *fichier)
 {
   FILE *input;
   int a=255;
   int error;
       error = 0;
     input = fopen("fichier","r" );   //la chaine "fichier" contient le nom du fichier
     if ( input==NULL )
   {
     printf("  Impossible d'ouvrir ce fichier. \n " );
     exit ( 1 );
   }
     while ( 1 )
   {
     getline (&line,&a,input);
     // j'effectue mes traitements
         }
      
  // j'effectue mes traitements
     fclose(input);
     return error;
 }       // Ma fonction main
   int main (void)
   {
     int c_num;
   char *cnf_file_name = "fichier_cnf.cnf";  //je stocke le nom du fichier
   int error;
   int l_num;
   int v_num;
       error = lit_fichier (cnf_file_name);   // j'appelle la fonction
     if ( error )
   {
     printf("  L'entete ne peut pas etre lue.\n" );
     return;
   }
     printf("\n" );
   printf("  Nombre de variables       V_NUM  = %d \n",v_num);
   printf("  Nombre de clauses         C_NUM  = %d \n",c_num);
   printf("  Nombre de literals signés L_NUM  = %d \n",l_num);
     return;pasdsée a getline;
 }
 
   |