cobra176
Messages postés86Date d'inscriptionmercredi 1 novembre 2000StatutMembreDernière intervention21 janvier 2009
-
4 janv. 2005 à 17:19
christophebalet198406
Messages postés3Date d'inscriptionlundi 28 mars 2005StatutMembreDernière intervention29 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
minet03
Messages postés415Date d'inscriptionsamedi 4 janvier 2003StatutMembreDernière intervention 2 décembre 20053 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é.
minet03
Messages postés415Date d'inscriptionsamedi 4 janvier 2003StatutMembreDernière intervention 2 décembre 20053 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.
cobra176
Messages postés86Date d'inscriptionmercredi 1 novembre 2000StatutMembreDernière intervention21 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
Vous n’avez pas trouvé la réponse que vous recherchez ?
minet03
Messages postés415Date d'inscriptionsamedi 4 janvier 2003StatutMembreDernière intervention 2 décembre 20053 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 ?!
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;
}
minet03
Messages postés415Date d'inscriptionsamedi 4 janvier 2003StatutMembreDernière intervention 2 décembre 20053 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.
christophebalet198406
Messages postés3Date d'inscriptionlundi 28 mars 2005StatutMembreDernière intervention29 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.