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

Etudiant -  
kilian Messages postés 8732 Date d'inscription   Statut Modérateur Dernière intervention   -
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   Statut Contributeur Dernière intervention   1 846
 
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 8732 Date d'inscription   Statut Modérateur Dernière intervention   1 526
 
Regarde strstr http://www.linux-kheops.com/doc/man/manfr/man-html-0.9/man3/strstr.3.html
0