Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2721 connectés 

  FORUM HardWare.fr
  Programmation
  C

  Rechereche d'un mot dans une phrase

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Rechereche d'un mot dans une phrase

n°1112447
finch911
Posté le 08-06-2005 à 11:58:45  profilanswer
 

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?

mood
Publicité
Posté le 08-06-2005 à 11:58:45  profilanswer
 

n°1112477
Emmanuel D​elahaye
C is a sharp tool
Posté le 08-06-2005 à 12:13:52  profilanswer
 

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


---------------
Des infos sur la programmation et le langage C: http://www.bien-programmer.fr Pas de Wi-Fi à la maison : http://www.cpl-france.org/
n°1112499
finch911
Posté le 08-06-2005 à 12:24:41  profilanswer
 

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.


Message édité par finch911 le 08-06-2005 à 12:26:24
n°1112502
Taz
bisounours-codeur
Posté le 08-06-2005 à 12:25:47  profilanswer
 

/me se tire une balle dans la tête ...

n°1112509
finch911
Posté le 08-06-2005 à 12:29:04  profilanswer
 

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

n°1112520
Taz
bisounours-codeur
Posté le 08-06-2005 à 12:37:20  profilanswer
 

bah si t'arrêtais de tirer dans le pieds en ayant une mauvaise utilisation de malloc, feof, fopen, etc ...

n°1112595
finch911
Posté le 08-06-2005 à 13:24:28  profilanswer
 

cad?

n°1113207
Taz
bisounours-codeur
Posté le 08-06-2005 à 20:58:02  profilanswer
 

man malloc
man feof
man fopen

n°1115341
Sve@r
Posté le 10-06-2005 à 09:59:23  profilanswer
 

finch911 a écrit :

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


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.


Message édité par Sve@r le 10-06-2005 à 10:01:30
n°1115347
cgo2
Dum spiro spero
Posté le 10-06-2005 à 10:02:39  profilanswer
 

Pas terrible parceque ton algo trouvera "comment" si j'écris "commentaire"

mood
Publicité
Posté le 10-06-2005 à 10:02:39  profilanswer
 

n°1115427
phnatomass
Je m'empare de ton esprit !!
Posté le 10-06-2005 à 10:57:33  profilanswer
 

Y a-t-il une raison particulière pour laquelle personne n'a conseillé d'utiliser la fonction strtok ?

n°1116477
Sve@r
Posté le 11-06-2005 à 08:06:18  profilanswer
 

cgo2 a écrit :

Pas terrible parceque ton algo trouvera "comment" si j'écris "commentaire"


 
Ah oui, exact !!!  :??:  


---------------
Vous ne pouvez pas apporter la prospérité au pauvre en la retirant au riche.
n°1116478
Sve@r
Posté le 11-06-2005 à 08:07:16  profilanswer
 

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... :D


Message édité par Sve@r le 11-06-2005 à 08:31:26

---------------
Vous ne pouvez pas apporter la prospérité au pauvre en la retirant au riche.
n°1116496
cgo2
Dum spiro spero
Posté le 11-06-2005 à 10:12:11  profilanswer
 

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
       informations suivantes :
 
              Cette fonction modifie son premier argument.
 
              Les caractères de séparation sont surchargés, leur identité  est
              donc perdue.
 
              Cette  fonction  ne  doit  pas être invoquée sur une chaîne con-
              stante.
 
              La fonction strtok() utilise un buffer statique  et  n'est  donc
              pas sûre dans un contexte multithread. Dans ce cas il vaut mieux
              utiliser strtok_r().

n°1116682
ToxicAveng​er
Posté le 11-06-2005 à 15:48:26  profilanswer
 

Taz a écrit :

man malloc
man feof
man fopen


 

C:\>man malloc
'man' n'est pas reconnu en tant que commande interne
ou externe, un programme exécutable ou un fichier de commandes.


 
essayes encore [:itm]

n°1116686
KangOl
Profil : pointeur
Posté le 11-06-2005 à 15:53:15  profilanswer
 

ToxicAvenger a écrit :

C:\>man malloc
'man' n'est pas reconnu en tant que commande interne
ou externe, un programme exécutable ou un fichier de commandes.


 
essayes encore [:itm]


tu mérites le ban [:pingouino]


---------------
Nos estans firs di nosse pitite patreye...
n°1116763
ToxicAveng​er
Posté le 11-06-2005 à 18:48:47  profilanswer
 

KangOl a écrit :

tu mérites le ban [:pingouino]


 
tiens donc, et pourquoi ca ? De plus demande de ban = ban non ?

n°1116794
fra0
Posté le 11-06-2005 à 19:37:16  profilanswer
 

finch911 a écrit :


[...]
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.


 
é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


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C

  Rechereche d'un mot dans une phrase

 

Sujets relatifs
recherche de filtrage dans une phraseRécupérer la phrase complète contenant le mot recherché
projet c++ simple traduire une phrase en morse "sonore"PHP : Couper une phrase
comment afficher des phrase en couleur en C[php]enlever espce avant et apres une phrase
commande HTML ou pour défilement de phrase au niveau du logo explorer[C++] Problème d'insertion de phrase
Plus de sujets relatifs à : Rechereche d'un mot dans une phrase


Copyright © 1997-2025 Groupe LDLC (Signaler un contenu illicite / Données personnelles)