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;
}
|