Moteur de recherche

cobra176 Messages postés 86 Date d'inscription mercredi 1 novembre 2000 Statut Membre Dernière intervention 21 janvier 2009 - 4 janv. 2005 à 17:19
christophebalet198406 Messages postés 3 Date d'inscription lundi 28 mars 2005 Statut Membre Dernière intervention 29 mars 2005 - 28 mars 2005 à 11:07
j'essai de creer un moteur de recherche en langage C pour des fichier txt et
quand on cherche un mot , on doit afficher la ligne complete ou il se trouve
quelqu'un peut m'aider
merci d'avant

11 réponses

minet03 Messages postés 415 Date d'inscription samedi 4 janvier 2003 Statut Membre Dernière intervention 2 décembre 2005 3
4 janv. 2005 à 18:28
créer une variable dynamique :

char *chaine; // créé l'adresse

malloc(chaine, 1024); // alloue la mémoire

... // le code

free(chaine); // libère la mémoire


dans le code tu met des fonctions qui va permettre de lire ligne par ligne.

Une fois la ligne récupérée, tu recherches dedans. Si c'est positif tu
affiches (ou autre chose), sinon tu passes à la ligne suivante. Avec
une petite boucle Do...While(); ce ne devrais pas etre compliqué.


Le CyberMonde nous offre une meilleur qualité de vie
CyberMan.inc The WebSite
0
cobra176 Messages postés 86 Date d'inscription mercredi 1 novembre 2000 Statut Membre Dernière intervention 21 janvier 2009
4 janv. 2005 à 21:12
tu pourrait le mettre en détails si te plait ?
0
minet03 Messages postés 415 Date d'inscription samedi 4 janvier 2003 Statut Membre Dernière intervention 2 décembre 2005 3
4 janv. 2005 à 23:22
A vrai dire je n'ai jamais fait de source pareil. Mais tu viens de m'en
donner l'idée. Je vais essayé de le faire et je le posterai demain soir
(mercredi soir).

Mais renseigne toi déjà sur la façon de lire un fichier ligne par ligne (1024 chars).

Je pense que je pourrai faire la fonction de recherche demain après midi.

Le CyberMonde nous offre une meilleur qualité de vie
CyberMan.inc The WebSite
0
cobra176 Messages postés 86 Date d'inscription mercredi 1 novembre 2000 Statut Membre Dernière intervention 21 janvier 2009
5 janv. 2005 à 14:08
excuse moi mais j'ai oublier de te dire que les fichier txt sont dans
un dossier et que je ne dois pas les bouger ,es que tu pourrait me dire
comment acceder a l'intérieur d'un dossier pour en suite indique le nom
du fichier ou je veux que la recherche se faisais
merci
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
minet03 Messages postés 415 Date d'inscription samedi 4 janvier 2003 Statut Membre Dernière intervention 2 décembre 2005 3
5 janv. 2005 à 18:53
A toi de gérer les URL, tu met dans une chaine l'adresse de ton
dossier, ensuite les fonctions feront le reste. Si tu veux je viens de
terminer la fonction de recherche ?!

Le CyberMonde nous offre une meilleur qualité de vie
CyberMan.inc The WebSite
0
cobra176 Messages postés 86 Date d'inscription mercredi 1 novembre 2000 Statut Membre Dernière intervention 21 janvier 2009
5 janv. 2005 à 20:56
j'ai reussi a regler le probl de l'adresse et oui je veux bien la fonction recherche
merci
0
minet03 Messages postés 415 Date d'inscription samedi 4 janvier 2003 Statut Membre Dernière intervention 2 décembre 2005 3
5 janv. 2005 à 21:59
Voilà la fonction :

void Recherche(char *String, char *Search)

{

int SizeString = strlen(String); // nombre de caractères dans la ligne

    int SizeSearch =
strlen(Search); // nombre de caractères dans
le mot à chercher

    int i= 0,j=0; // pour les boucles

    int nbrTrouve =0,ok= 0; // nbrTrouve
pour le nombre de mots trouvés, ok pour dire si tout est
bon

    int itmp =0; // pour stocker la place du premier
caractères

    cout<<"La chaine fait :
"<<SizeString<<" caractères"<<endl;

    cout<<"Le mot a rechercher fait :
"<<SizeSearch<<" caractères"<<endl;

    for(i=0;i<SizeString;i++) // Analyse chaque caractères de la ligne

    {

        if(String[i] ==
Search[0]) // Si la première lettre du mot correspond

        {

           
itmp = i; // on stock la position du caratère
où on s'arrête

           
for(itmp,j=0;j<SizeSearch;j++,itmp++)
// on lit chaque lettre du mot à
chercher

            {

           
    if(String[itmp] == Search[j]) // Si les lettres suivantes correspondes

           
        ok++; // on incrémente le nombre de bonne réponse
!

                else

           
        ok=0; // sinon on
remet à 0

            }

           
if(ok==SizeSearch) // Si le nombre de bonne
réponses vaut le nombre de lettres du mot

           
    nbrTrouve++; // on
incrémente le nombre de mots trouvés

        }

    }

   
cout<<i<<"
caracteres lu,
"<<nbrTrouve<<" mot(s) trouve(s)"<<endl;

}


J'espère que cela te servira.


Le CyberMonde nous offre une meilleur qualité de vie
CyberMan.inc The WebSite
0
minet03 Messages postés 415 Date d'inscription samedi 4 janvier 2003 Statut Membre Dernière intervention 2 décembre 2005 3
5 janv. 2005 à 22:03
oups désolé, j'ai fait un mauvais copier coller :-D :-s

void Recherche(char *String, char *Search)

{

int SizeString = strlen(String); // nombre de caractères dans la ligne

int SizeSearch = strlen(Search); // nombre de caractères dans le mot à chercher

int i=0,j=0; // pour les boucles

int nbrTrouve=0,ok=0; // nbrTrouve pour le nombre de mots trouvés, ok pour dire si tout est bon

int itmp=0; // pour stocker la place du premier caractères

cout<<"La chaine fait : "<<SizeString<<" caractères"<<endl;

cout<<"Le mot a rechercher fait : "<<SizeSearch<<" caractères"<<endl;

for(i=0;i<SizeString;i++) // Analyse chaque caractères de la ligne

{

if(String[i] == Search[0]) // Si la première lettre du mot correspond

{

itmp = i; // on stock la position du caratère où on s'arrête


for(itmp,j=0;j<SizeSearch;j++,itmp++) // on lit chaque lettre du mot
à chercher

{


if(String[itmp] == Search[j]) // Si les lettres suivantes correspondes


ok++; // on incrémente le nombre de bonne réponse !

else


ok=0; // sinon on remet à 0

}


if(ok==SizeSearch) // Si le nombre de bonne réponses vaut le nombre de
lettres du mot


nbrTrouve++; // on incrémente le nombre de mots trouvés

}

}

cout<<i<<" caracteres lu, "<<nbrTrouve<<" mot(s) trouve(s)"<<endl;

}

Le CyberMonde nous offre une meilleur qualité de vie
CyberMan.inc The WebSite
0
cobra176 Messages postés 86 Date d'inscription mercredi 1 novembre 2000 Statut Membre Dernière intervention 21 janvier 2009
6 janv. 2005 à 09:49
le programme ne fonctionne pas mon assenbleur me dit invalid operands >>
je te montre mon code si tu pouvais me montrer ou je me suis tromper

#include <stdio.h>
main()
{
char filename[260];
char caract,adresse;
char fullpath[260];
void Recherche();
FILE * lecture;

printf("choisir format et le type\n");
scanf("%s", filename);strcpy(fullpath, "C:/Documents and Settings/");
strcat(fullpath, filename);
lecture = fopen(fullpath, "rb");
while (fread
(&caract,1,1,lecture), !feof(lecture))
{
Recherche();
}
fclose (lecture);
printf("\n\nApuyez sur retour.");
fflush(stdin); scanf("%c",&caract);
}
void Recherche(char *String, char *Search)
{
int SizeString = strlen(String); // nombre de caractères dans la ligne
int cout ,endl;
int SizeSearch = strlen(Search); // nombre de caractères dans le mot à chercher
int i=0,j=0; // pour les boucles
int nbrTrouve=0,ok=0; // nbrTrouve pour le nombre de mots trouvés, ok pour dire si tout est bon
int itmp=0; // pour stocker la place du premier caractères
cout=="La chaine fait : "==SizeString==" caractères"==endl;
cout<<"Le mot a rechercher fait : "<<SizeSearch<<" caractères"<<endl;
for(i=0;i<SizeString;i++) // Analyse chaque caractères de la ligne
{
if(String[i] == Search[0]) // Si la première lettre du mot correspond
{
itmp = i; // on stock la position du caratère où on s'arrête
for(itmp,j=0;j<SizeSearch;j++,itmp++) // on lit chaque lettre du mot à chercher
{
if(String[itmp] == Search[j]) // Si les lettres suivantes correspondes
ok++; // on incrémente le nombre de bonne réponse !
else
ok=0; // sinon on remet à 0
}
if(ok==SizeSearch) // Si le nombre de bonne réponses vaut le nombre de lettres du mot
nbrTrouve++; // on incrémente le nombre de mots trouvés
}
}
cout<<i<<" caracteres lu, "<<nbrTrouve<<" mot(s) trouve(s)"<<endl;
}
0
minet03 Messages postés 415 Date d'inscription samedi 4 janvier 2003 Statut Membre Dernière intervention 2 décembre 2005 3
6 janv. 2005 à 18:41
En fait quand tu appelles ma fonction, tu ne met pas les arguments à
passer. Le premier argument à passer est la chaine où l'on veux
chercher, le deuxième est la chaine à chercher.

Donc premier changement, faire une belle boucle qui lit une ligne (ou
1024 caractères). Cette ligne tu la passe en premier paramètres.
Ensuite la chaine que tu veux chercher, tu la met en deuxièmes
paramètre.

Et si ça n'arrange pas ton problème, dit moi la ligne où il y a l'erreur.

Le CyberMonde nous offre une meilleur qualité de vie
CyberMan.inc The WebSite
0
christophebalet198406 Messages postés 3 Date d'inscription lundi 28 mars 2005 Statut Membre Dernière intervention 29 mars 2005
28 mars 2005 à 11:07
Salut cobra 176, je suis interressé par ton programme du moteur de recherche en C si tu pouvez me l'envoyer svp j'en esy moi aussi besoin. Merci d'avance.
0
Rejoignez-nous