[C] répeter le programme
rose77
-
blurk Messages postés 486 Date d'inscription Statut Membre Dernière intervention -
blurk Messages postés 486 Date d'inscription Statut Membre Dernière intervention -
bonjour,
quelqu un pourrait il m aider s il vous plait?
j ai fait une fonction qui recoit en argument un texte et un mot
une fois que l utilisateur à tappé son texte et son mot, elle cherche ce mot ds la texte et affiche le mot qui le suit.
mais je bloque, car je dois refaire la meme chose c'est à dire que le mot trouvé devienne le mot recherché dans le texte
j'ai essayé avec la fonction recursive mais je n y arrive pas
voici mon programme qui ne marche que pr le premier mot, merci de m'aider s il vous plait...
#include <stdio.h>
#include <string.h>
#define N 20
void mn(char str1[],char str2[]) {
char *ptr;
char *tab;
int l;
int i=0;
gets(str1);
gets(str2);
l=strlen(str2);
ptr = strstr(str1, str2);
i=i+l;
do {printf("%c",ptr[i]);
i++;
}
while(ptr[i]!=' ');
}
int main (void)
{
char m[N];
char n[N];
mn(m,n);
return 0;}
quelqu un pourrait il m aider s il vous plait?
j ai fait une fonction qui recoit en argument un texte et un mot
une fois que l utilisateur à tappé son texte et son mot, elle cherche ce mot ds la texte et affiche le mot qui le suit.
mais je bloque, car je dois refaire la meme chose c'est à dire que le mot trouvé devienne le mot recherché dans le texte
j'ai essayé avec la fonction recursive mais je n y arrive pas
voici mon programme qui ne marche que pr le premier mot, merci de m'aider s il vous plait...
#include <stdio.h>
#include <string.h>
#define N 20
void mn(char str1[],char str2[]) {
char *ptr;
char *tab;
int l;
int i=0;
gets(str1);
gets(str2);
l=strlen(str2);
ptr = strstr(str1, str2);
i=i+l;
do {printf("%c",ptr[i]);
i++;
}
while(ptr[i]!=' ');
}
int main (void)
{
char m[N];
char n[N];
mn(m,n);
return 0;}
A voir également:
- [C] répeter le programme
- Programme demarrage windows - Guide
- Cette action ne peut pas être réalisée car le fichier est ouvert dans un autre programme - Guide
- Message programmé iphone - Guide
- Mettre en veille un programme - Guide
- Programme word gratuit - Guide
6 réponses
Salut
L'idée est bonne, mais il faut faire la saisie dans le main().
Ensuite ta fonction recherche toi tenir compte des facteurs suivants :
- le mot recherché peut être le dernier -> pas de suivant
- le mot suivant est le dernier (test de fin de recherche)
- le mot recherché n'est pas trouvé
T'es pas obligé de faire de la recursivité. Utilise un prototype du type :
Attention, recherches_suivant() doit copier le mot suivant dans la chaine
'suivant', pas faire jou-jou avec les pointeurs.
L'idée est bonne, mais il faut faire la saisie dans le main().
Ensuite ta fonction recherche toi tenir compte des facteurs suivants :
- le mot recherché peut être le dernier -> pas de suivant
- le mot suivant est le dernier (test de fin de recherche)
- le mot recherché n'est pas trouvé
T'es pas obligé de faire de la recursivité. Utilise un prototype du type :
/* ** Fonction qui recherche 'mot' dans 'phrase' et retourne le mot 'suivant' ** retourne ** 0: le mot est le dernier ** 1: tout est ok ** -1: le mot n'a pas été trouvé */ int recherche_suivant( char* phrase, char* mot, char* suivant ) Au niveau de l'appel : char phrase[...], mot[...], suivant[...] ; int ret, i ; /* faire les saisies */ for( i=0; i<nombre_de_boucle_a_faire, i++) { ret = recherche_suivant( phrase, mot, suivant ) ; /* faire les tests de retour et arrêter si nécessaire */ strcpy( mot, suivant ) ; }
Attention, recherches_suivant() doit copier le mot suivant dans la chaine
'suivant', pas faire jou-jou avec les pointeurs.
salut
déjà il faudrait 2 scanf, un pour saisir le texte, et un pour saisir le mot.
ensuite pour la position du mot, je peux me tromper mais ça doit être
i-l
cordialement
déjà il faudrait 2 scanf, un pour saisir le texte, et un pour saisir le mot.
ensuite pour la position du mot, je peux me tromper mais ça doit être
i-l
cordialement
je vous remercie
pour les scanf je les ai remplacé par gets.
Mais, Crabs j'essaie avec des exemples tres simple, je voudrais repeter la boucle tant que str1[i]!='\0' (le teste n'est pas encore terminé).
Est ce possible?
car je ne sais vraiment pas comment appliquer ton protype, dans la boucle for comment connaitre le nbr de boucles à faire?
merci
pour les scanf je les ai remplacé par gets.
Mais, Crabs j'essaie avec des exemples tres simple, je voudrais repeter la boucle tant que str1[i]!='\0' (le teste n'est pas encore terminé).
Est ce possible?
car je ne sais vraiment pas comment appliquer ton protype, dans la boucle for comment connaitre le nbr de boucles à faire?
merci
Salut,
La fin d'un mot ça peut être effectivement l'espace ou la fin de chaine.
Si c'est possible, y a un opérateur 'OU' en C : ||
gets() remplace '\n' de fin de saisie, par '\0'
Pour le nombre de boucle, ça c'est toi qui voit, tu dit que tu dois le faire une
fois, puis que tu dois le refaire avec le mot suivant qui devient le mot à
rechercher (2 boucles)
La fin d'un mot ça peut être effectivement l'espace ou la fin de chaine.
Si c'est possible, y a un opérateur 'OU' en C : ||
gets() remplace '\n' de fin de saisie, par '\0'
Pour le nombre de boucle, ça c'est toi qui voit, tu dit que tu dois le faire une
fois, puis que tu dois le refaire avec le mot suivant qui devient le mot à
rechercher (2 boucles)
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
J'ai retrouvé ça dans mes archives
Attention, il va y avoir une petite modification pour que ça fasse ce que tu as demandé.
A+
¤
Attention, il va y avoir une petite modification pour que ça fasse ce que tu as demandé.
A+
//--------------------------------------------------------------------------- // retourne l'index de chaine ou a ete trouve la souschaine int __fastcall trouve_mot_avant(char *avantquoi,char *chaine) { int len=strlen(chaine),lenmot=strlen(avantquoi); int i; char * tampon=(char *)malloc(lenmot); bool found=false; for ( i=0;i<(len-lenmot) && !found;++i) { strncpy(tampon,chaine+i,lenmot); tampon[lenmot]=0; if(!strcmp(avantquoi,tampon))found=true; } free(tampon); return i; }--
¤