Voila je vous explique mon probleme.
Je dois refaire la fonction grep en C.
Le but est donc de rechercher un mot donné et d'afficher toutes les lignes contenant ce mot.
Pour faire ceci j'ai qq fonctions:
prendre: recupere les lettres une par une dans mon fichier choisi
consulter: consulte la lettre prise
Alors voila ce que j'ai fait.
void grep2(Flot flot)
{
int nb;
char fichier[50];
char *buffer;
char *phrase;
char *mot;
printf("Quel fichier\n>>");
scanf("%s",fichier);
printf("Quel mot voulez vous rechercher ?\n");
scanf("%s",mot);
ouvrir(flot,fichier);
while(!fdf(flot))
{
while(strcmp(consulter(flot),"\n")!=0)
{
mettre(flot,consulter(flot));
phrase = flot->buf;
phrase++;
prendre(flot);
}
if (strcmp(phrase,mot) != NULL)
{
printf("je cherche le mot dans la phrase\n");
printf("%s", phrase);
}
prendre(flot);
}
fermer(flot);
}
Je vous met là la structure du type Flot:
typedef struct SFlot
{
FILE * pfile;
void *buf;
size_t taille;
int place;
int fdf;
int nbElements;
} SFlot ;
typedef SFlot * Flot;
La fonction consulter:
void * consulter(Flot pfl)
{
if(estOuvert(pfl))
{
return pfl->buf;
}
else
return (char *)NULL;
}
Et la fonction prendre;
Flot prendre(Flot pfl)
{
if(! estOuvert(pfl))
return (Flot)NULL;
if(fdf(pfl))
return (Flot)NULL;
if( fread(pfl->buf,pfl->taille,1,pfl->pfile) == 0)
{
pfl->fdf = 1;
}
else
{
pfl->fdf = 0;
(pfl->place)++;
}
return pfl;
}
Donc voila ce que je cherche a faire. C'est de copier toute la phrase dans un poiteur de char char *phrase et ensuite de rechercher dans cette phrase si le mot desire s'y trouve. Mais je n'arrive pas, je ne sais pas quelle fonction utilisée
![:??: :??:]()
.
Merci d'avance pour votre, si vous avez des questions n'hesitez pas je repondrai.
@+