Programmation en c,

Résolu/Fermé
rilesse - 23 avril 2006 à 12:55
 rilesse - 24 avril 2006 à 18:04
salut tous le mone si quelqu'un peut me faire je serai trés reconnaissant SVP SVP SVP ...........................................

le programme en c qui recherche une sous chaine dans une autre chaine constante comme cela


int str str(const char *chaine,const char *cible)


elle retourne le nombre de fois qu'une cible apparait dans une chaine.
exemple: " le monde est bon" le programme doit retourner la valeur 2.
SVP aider moi c'est trés urgent
merci d'avance

3 réponses

oui je sait, mais le rof nous a demander d'ecrire un implémentation de cette fonction.
j'ai essayer de la faire mais mais malheuresemant mon micro c'est plenter et j'ai pas un micro pour le refaire c'est trop tard, SVP aidez moi
1
mamiemando Messages postés 33446 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 20 décembre 2024 7 812
23 avril 2006 à 12:59
C'est plutôt strstr :
http://www.linux-kheops.com/doc/man/manfr/man-html-0.9/man3/strstr.3.html

Et si elle existe déjà, pourquoi tu veux la recoder ? En plus je crois que c'est une question à laquelle j'ai déjà répondu sur ce forum... Il faut balayer ta chaine en utilisant la fonction strcmp...

Bonne chance
0
mamiemando Messages postés 33446 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 20 décembre 2024 7 812
24 avril 2006 à 00:25
On écrit trivialement le programme suivant ;-)
#include <string.h>
#include <stdio.h>

/**
 * \brief teste si la deuxieme chaine est le
 * debut de la seconde
 * \param sentence la phrase
 * \param pattern le motif
 * \return 1 si vrai 0 sinon
 */
int is_prefix(const char *sentence,const char *pattern){
    unsigned int i,
        len_p=strlen(pattern),
        len_s=strlen(sentence);

    for(i=0;i<len_p;++i){
        if(i>len_s) return 0;
        if(sentence[i]!=pattern[i]) return 0;
    }
    return 1;
}

/**
 * \brief compare deux chaines en retournant
 * le nombre d'occurence de la 2e dans la 1ere
 * \param sentence la phrase
 * \param pattern le motif
 * \return le nombre d'occurence de str2 dans str1
 */
unsigned int my_strstr(const char *sentence,const char *pattern){
    unsigned int res=0,i,
        len_s=strlen(sentence),
        len_p=strlen(pattern);

    for(i=0;i<len_s;++i){
        if(is_prefix(sentence,pattern)) ++res;
        ++sentence;
    }

    return res;
}

int main(){
    char *str1="plop et plop plopplop";
    char *str2="plop";
    printf("str1 = [%s]\n",str1);
    printf("str2 = [%s]\n",str2);
    printf("my_strstr(\"%s\",\"%s\") = %d\n",str1,str2,my_strstr(str1,str2));
    return 0;
}

Merci de ne pas recopier bêtement et de prendre le temps de comprendre... je n'aime pas donner les solutions d'un exercice directement.

Bonne chance
0
merci mon ami je suis reconnaissant, tu m'as sauver.
meme moi je voulais pas recopier la solution avant de comprendre le probléme et de le faire mais cette fois le micro est chez le reparateur.
merci beaucoup.@+
0