[C] fct vérifiant si une chaine est inclus ..

Fermé
Etudiant - 23 nov. 2008 à 18:52
kilian Messages postés 8731 Date d'inscription vendredi 19 septembre 2003 Statut Modérateur Dernière intervention 20 août 2016 - 23 nov. 2008 à 22:59
Bonjour,
Je veux réaliser une fonction qui vérifie si une chaine est inclue dans une autre
voilà ce que j'ai essayer
mais il marche pas tout a fait
il marche juste pour les premier caractere par exemple si je fait
ch1= france
ch2= fra
il va me dire que la chaine 2 est inclue dans 1
mais le probleme
si je fait
ch1 = france
ch2 = anc
il va me dire que ce n'est pas inclue
voilà la fonction
void inclus(char ch1[],char ch2[])
{
     char ch3[40];
     if(strlen(ch1)>strlen(ch2))
     {
     strncpy(ch3,ch1,strlen(ch2));
     if(strcmp(ch3,ch2)==0)
     printf("le chaine 2 est inclus dans 1 ");
     else
     printf("la chaine 2 n'est pas include dans 1");
     }
     else if(strlen(ch1)<strlen(ch2))
     {
     strncpy(ch3,ch2,strlen(ch1));
     if(strcmp(ch3,ch1)==0)
     printf("le chaine 1 est inclus dans 2 ");
     else 
     printf("la chaine 1 n'est pas inclue dans 2");
     
     }
A voir également:

2 réponses

fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 844
23 nov. 2008 à 22:26
Salut,
C'est normal, strcmp, sert juste à comparer si deux chaînes sont strictement égal ou pas. "france" et "anc" ne ne sont égales, donc différent de 0. D'où le message "ce n'est pas inclu".
Et juste pour remarque, il existe aussi strncmp au lieu de strcmp.
Et lorsque tu utilises strncpy, : strncpy(ch3,ch1,strlen(ch2)); C'est pas bon.
strncpy(ch3,ch1,strlen(ch1)+1);.
Cdlt
1
kilian Messages postés 8731 Date d'inscription vendredi 19 septembre 2003 Statut Modérateur Dernière intervention 20 août 2016 1 527
23 nov. 2008 à 22:59
Regarde strstr http://www.linux-kheops.com/doc/man/manfr/man-html-0.9/man3/strstr.3.html
0