Rechereche d'un mot dans une phrase - C - Programmation
Marsh Posté le 08-06-2005 à 12:13:52
finch911 a écrit : Connaissez vous un bon moyen de chercher des mots dans une phrase? |
analyse syntaxique de base. Parcours de la chaine, detection d'espace (isspace()), gestion élémentaire de l'état (is-a-word/is-not-a-word)... Pas de difficulté majeure. Poste ton code.
Pour une saisie correcte de la chaine:
http://mapage.noos.fr/emdel/notes.htm#saisie
http://mapage.noos.fr/emdel/notes.htm#fichiers
Marsh Posté le 08-06-2005 à 12:24:41
Le problème c'est qu'il s'agit d'une liste de mot que j'ai prise depuis 2 fichier, trier...
La fonction en question est la fonction "void recherche". Je "patauge" beaucoup donc ce qui est déjà fait dans cette fontion n'est a mon avis pas correcte du tout.
code:
http://users.skynet.be/fa031120/LC70.c
Fichier des mots
http://users.skynet.be/fa031120/ficFixe.data
Autre fichier avec des mots
http://users.skynet.be/fa031120/ficVar.data
J'ai aussi un problème assez embettant. Avec les mots venant de FicVar.data j'ai des petits signe étrange après le mot.
Marsh Posté le 08-06-2005 à 12:29:04
t'es pas le seul en fait.
Je demande pas que vous fassiez me travail a ma place
Mais je demande simplement si il existe un bon algorithme connu pour rechercher des mots dans une chaine de caractère
Marsh Posté le 08-06-2005 à 12:37:20
bah si t'arrêtais de tirer dans le pieds en ayant une mauvaise utilisation de malloc, feof, fopen, etc ...
Marsh Posté le 10-06-2005 à 09:59:23
finch911 a écrit : t'es pas le seul en fait. |
En gros:
T'as une phrase => char phrase[8000]
T'as un mot => char mot[20]
Tu fais une boucle avec un pointeur qui bouge dans ta phrase
=> for (pt=phrase; *pt != '\0'; pt++)
Tu compares ton pointeur avec le mot
=> if (strncmp(pt, mot, strlen(mot)) == 0)
Et voilà. Si ton mot est dans la phrase ça te le trouve.
Quand tu veux blinder ton truc, tu évites de mettre "20" et "8000" mais tu utilises plutôt de l'allocation dynamique pour être certain que tes variables ont assez de mémoire pour stocker la phrase et/ou le mot.
Marsh Posté le 10-06-2005 à 10:02:39
Pas terrible parceque ton algo trouvera "comment" si j'écris "commentaire"
Marsh Posté le 10-06-2005 à 10:57:33
Y a-t-il une raison particulière pour laquelle personne n'a conseillé d'utiliser la fonction strtok ?
Marsh Posté le 11-06-2005 à 08:06:18
cgo2 a écrit : Pas terrible parceque ton algo trouvera "comment" si j'écris "commentaire" |
Ah oui, exact !!!
Marsh Posté le 11-06-2005 à 08:07:16
phnatomass a écrit : Y a-t-il une raison particulière pour laquelle personne n'a conseillé d'utiliser la fonction strtok ? |
Ptet paske personne ne sait s'en servir...
Marsh Posté le 11-06-2005 à 10:12:11
phnatomass a écrit : Y a-t-il une raison particulière pour laquelle personne n'a conseillé d'utiliser la fonction strtok ? |
plusieurs même, extrait du man :
Évitez au maximum d'utiliser cette fonction. Sinon, prenez note des |
Marsh Posté le 11-06-2005 à 15:48:26
Taz a écrit : man malloc |
C:\>man malloc |
essayes encore
Marsh Posté le 11-06-2005 à 15:53:15
ToxicAvenger a écrit :
|
tu mérites le ban
Marsh Posté le 11-06-2005 à 18:48:47
ReplyMarsh Posté le 11-06-2005 à 19:37:16
finch911 a écrit : |
étrange...
<end of transmission><null><acknowledge><null>Donald<acknowledge><null>Mickey<enquiry><null>Daisy<enquiry><null>Pluto
c'est un message subliminal pour ne pas utiliser strtok et bsearch
Marsh Posté le 08-06-2005 à 11:58:45
Salut,
Je dois proposer a l'utilisateur d'entrer un une phrase.
Ensuite je dois cherche si des mots qui se trouve dans une structure se situe dans la phrase.
Comme paramètre de la fonction j'ai un pointeur de pointeur vers l'adresse de la Liste Linéaire de la structure ou se trouve chaque mots, un pointeur de caractère sur la phrase, un int: la taille de la phrase
void recherche (struct Liste **pListe, char *phrase, int longueurphrase)
Si dans ma phrase j'ai "bonjour comment ca va?"
Et que dans ma liste j'ai "bonjour", "ca","venir", il faudrait qu'il me dise qu'il en a trouvé 2.
Connaissez vous un bon moyen de chercher des mots dans une phrase?