Recherche de chaîne de caractère dans un fichier

Résolu/Fermé
louberlu Messages postés 4 Date d'inscription mardi 20 mai 2014 Statut Membre Dernière intervention 18 décembre 2015 - 18 déc. 2015 à 12:14
louberlu Messages postés 4 Date d'inscription mardi 20 mai 2014 Statut Membre Dernière intervention 18 décembre 2015 - 18 déc. 2015 à 12:56
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

A voir également:

1 réponse

louberlu Messages postés 4 Date d'inscription mardi 20 mai 2014 Statut Membre Dernière intervention 18 décembre 2015 1
18 déc. 2015 à 12:56
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