Bonjour,

je souhaite trouver toutes les occurences d'un mot et de renvoyer les lignes qui le contiennent.
Voici ma fonction:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
     void trouver(char *qui)
{
    int fd;
    int i,n=0;
    char a;
    char ligne[512];
    char *test;
    test=malloc(50);
if(test==NULL) { perror(""); exit(1);}
    fd=open("database",O_RDONLY);
    if(fd==-1)
    {
        perror("echec lors de l'ouverture de la base de donnees");
        exit(1);
    }
    while((i=read(fd,&a,1))>0)
    {
        if(a!='\n')
        {
            strcat(ligne,&a);
        }
        else
        {
            strcat(ligne,"\0");
             test=strrchr(ligne,'/');
              printf("on compare avec :%s \n",test+1);
             printf("on recherche :%s \n",qui);
            if(strcmp(test+1,qui)==0)
            {
                printf("%s\n",ligne);
                n++;
            }
    
             bzero(test,strlen(test));
             bzero(ligne,strlen(ligne));
        }
    }
    printf("\n%d files found\n\n",n);
}
mais lors de l'execution, j'obtiens ceci :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
 
on recherche :Aide.txt
on compare avec :screen.gif
on recherche :Aide.txt
on compare avec :Aide.txt
on recherche :Aide.txt
on compare avec :Affiche.class
 
0 files found
je ne vois pas d'où l'erreur provient.
les chaînes se teminent toutes les deux par 0