Rechercher une chaîne de caractère dans une autre chaîne de
ham
-
ham -
ham -
Bonjour,
je débute en c
j'ai un problème dans un exo
le but est de comparer deux chaînes de caractère
le programme renvoie vrai si la chaîne 2 est comprise dans la chaîne 1
le programme renvoie faux si la chaîne 2 n'est pas comprise dans la chaîne 1
voila le programme que j'ai réalisé et je suis bloqué
merci pour votre aide
#include <stdio.h>
#include <stdlib.h>
# include <stdio.h>
# include <stdlib.h>
typedef enum { false, true } bool;
int cmp(const char* s1, const char* s2);
int main()
{
char chaine1[] = "coucou";
char chaine2[] = "coucou";
if(cmp(chaine1, chaine2)==true )
{
printf("les chaines sont identiques\n");
}
else
{
printf("les chaines ne sont pas identiques\n");
}
return 0;
}
int cmp(const char* s1, const char* s2)
{
int i = 0;
do
{
if (s1[i] != s2[i])
return false;
i++;
}
while (s1[i-1] != 0);
return true;
}
je débute en c
j'ai un problème dans un exo
le but est de comparer deux chaînes de caractère
le programme renvoie vrai si la chaîne 2 est comprise dans la chaîne 1
le programme renvoie faux si la chaîne 2 n'est pas comprise dans la chaîne 1
voila le programme que j'ai réalisé et je suis bloqué
merci pour votre aide
#include <stdio.h>
#include <stdlib.h>
# include <stdio.h>
# include <stdlib.h>
typedef enum { false, true } bool;
int cmp(const char* s1, const char* s2);
int main()
{
char chaine1[] = "coucou";
char chaine2[] = "coucou";
if(cmp(chaine1, chaine2)==true )
{
printf("les chaines sont identiques\n");
}
else
{
printf("les chaines ne sont pas identiques\n");
}
return 0;
}
int cmp(const char* s1, const char* s2)
{
int i = 0;
do
{
if (s1[i] != s2[i])
return false;
i++;
}
while (s1[i-1] != 0);
return true;
}
A voir également:
- Rechercher une chaîne de caractère dans une autre chaîne de
- Chaine tnt gratuite sur mobile - Guide
- Plus de chaine tv - Guide
- Chaine radio - Télécharger - Médias et Actualité
- Caractère ascii - Guide
- Chaine musique bouygues - Accueil - Guide TV et vidéo
4 réponses
Bonjour,
Déjà, faudrait commencer par clarifier l'énoncé :
le but est de comparer deux chaînes de caractère
le programme renvoie vrai si la chaîne 2 est comprise dans la chaîne 1
Donc que souhaites-tu ? Comparer deux chaînes (égalité des chaînes ou non) ou vérifier que l'une fait partie de l'autre (inclusion) ?
Cdlt,
Déjà, faudrait commencer par clarifier l'énoncé :
le but est de comparer deux chaînes de caractère
le programme renvoie vrai si la chaîne 2 est comprise dans la chaîne 1
Donc que souhaites-tu ? Comparer deux chaînes (égalité des chaînes ou non) ou vérifier que l'une fait partie de l'autre (inclusion) ?
Cdlt,
Donc dans ton programme, la fonction cmp() ne sert à rien. Il vaut mieux faire une fonction estInclus() dont le prototype serait :
Elle renverra 1 (true) si ch1 est inclus dans ch2, 0 (false) sinon.
Il faut donc plutôt tester : chaine1="def" et chaine2="adcdefgh" que 2 chaînes identiques.
Donc au début, tu testes les premières lettres de chacune des 2 chaînes :
"adcdefgh" avec "def" -> KO
"dcdefgh" avec "def" -> OK
"cdefgh" avec "ef" -> KO
"cdefgh" avec "def" -> KO
"defgh" avec "def" -> OK
"efgh" avec "ef" -> OK
"fgh" avec "f" -> OK (fin de chaîne).
Donc, "def" est bien compris dans "adcdefgh"
Si tu as compris le principe, tu devrais être en mesure de coder l'algorithme.
Cdlt,
int estInclus (const char * const ch1, const char *const ch2)
Elle renverra 1 (true) si ch1 est inclus dans ch2, 0 (false) sinon.
Il faut donc plutôt tester : chaine1="def" et chaine2="adcdefgh" que 2 chaînes identiques.
Donc au début, tu testes les premières lettres de chacune des 2 chaînes :
"adcdefgh" avec "def" -> KO
"dcdefgh" avec "def" -> OK
"cdefgh" avec "ef" -> KO
"cdefgh" avec "def" -> KO
"defgh" avec "def" -> OK
"efgh" avec "ef" -> OK
"fgh" avec "f" -> OK (fin de chaîne).
Donc, "def" est bien compris dans "adcdefgh"
Si tu as compris le principe, tu devrais être en mesure de coder l'algorithme.
Cdlt,