Recherche de chaîne de caractère dans un fichier [Résolu/Fermé]

Signaler
Messages postés
4
Date d'inscription
mardi 20 mai 2014
Statut
Membre
Dernière intervention
18 décembre 2015
-
Messages postés
4
Date d'inscription
mardi 20 mai 2014
Statut
Membre
Dernière intervention
18 décembre 2015
-
Bonjour,

Je veux faire une fonction qui recherche une chaîne de caractère dans un fichier. Pour cela, je lis le fichier bloc par bloc avec fgets. On nous dit de prendre des blocs de 512 caractères. Je voudrais que la boucle s’arrête soit à la fin du fichier soit lorsqu'il trouve la chaîne de caractère.

Pour l'instant c'est juste un prototype.
bool isInFile(char* fic, char* word){
char* car = malloc(sizeof(char*));
FILE* file = NULL;
int i = 0;

bool res = false;
file = fopen(fic,"r");
if(file==NULL){
printf("Erreur lors de l'ouverture du fichier %s.\n",fic);
perror("Error: ");
exit(-1);
}else{
while(fgets(car,256,file)!=NULL || !res){ //Erreur de segmentation avant la sortit de la boucle
if(strstr(car,word) != NULL){
res = true;
printf("Ce fichier contient '%s'.\n",word);
}
i++;
printf("%d\n",i);
}
fclose(file);
}
free(car);

return res;
}


Le problème est qu'il y a une erreur de segmentation après la dernière ligne. Au lieu que la boucle s’arrête dès que je passe res à vrai, elle continue jusqu'à la dernière ligne. Et au lieu de sortir à ce moment, il affiche l'erreur de segmentation.

Si vous pouviez m'éclairer s'il vous plait.

Merci d'avance,

louberlu

1 réponse

Messages postés
4
Date d'inscription
mardi 20 mai 2014
Statut
Membre
Dernière intervention
18 décembre 2015
1
Je viens de trouver la réponse sur un autre forum. On m'a dit que c'est initialisation de ma chaîne de caractère "car" qui n'était pas bonne. Il faut que précise la taille.
char* car = malloc(512*sizeof(char));

Je donne la réponse au cas où.
Bonne journée.
1
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 65492 internautes nous ont dit merci ce mois-ci