Strstr

Bonjour,
je veux savoir ou peut on trouver les fonction predefinie du C !!
par example on veux avoir la fonction strstr !!
g charcher ds string.h mais g trouver que le prototype !!! moi je veux toute la fonction
merci
Configuration: Windows 98
Indeterminable Indeterminable

10 réponses

  1. merci bien
    c gentil
    voila g fai une otr solution et ca marche :
    #include<stdio.h>
    #include<conio.h>
    #include<string.h>
    void main()
    {
    char *ch,*sch,*deb_sch,*deb_ch;
    int j;
    clrscr();
    printf("entrez la chaine : \t");
    gets(ch);
    printf("entrez la sous-chaine : \t");
    gets(sch); deb_sch=sch;
    //recherche de la sous-chaine

    while(*ch && *sch)
    { deb_ch=ch;
    while(*sch && *sch==*ch)
    {
    sch++;
    ch++;
    }
    if(*sch)
    {
    sch=deb_sch;
    ch=deb_ch;
    ch++;
    }
    }

    if(!*sch) puts(deb_ch);
    else puts("error!");
    getch();
    }
    1. compte les caractères et arrête-toi à n :
      d'autre part, arrête aussi ta boucle si tu atteins la fin de schn, sinon ton programme risque de planter

      // rend 0 si égalité jusqu'à n caractères max
      int mastrncmp (const char * chn, const char * chn, int n) {

      int i=0;

      while(*ch && *sch ) {
      if (*ch!= *sch) return 1; // différence
      ch++;
      sch++;
      i++;
      if (i>=n) return 0; // égalité sur n caractères
      }
      if (*sch!=*ch) return 1; // une chaîne plus courte que l'autre et que n
      return 0;
      }
      1. oui mais je C ecreie la strcmp

        while(*ch &&*ch==*sch)
        {
        ch++;
        sch++;
        }k=*ch-*sch;
        if (k==0) //les 2chaine son identik

        masi leproblem ce ke la g utiliser strncmp alor je doi pa comparer toute la chaine (ch)
        je dois compager just les n lettre de ch avc sch
        ( n=strlen(sch) )
        mais ici strcmp compare toute la chaine :s:s
        1. ça a l'air très bien parti.

          Tu aurais dû sortir ta recherche pour en faire une fonction char * mastrstr (const char * s1, const char * s2) puisqu'au départ tu veux une fonction.

          strncmp est peut-être encore plus simple à écrire. Il faut comparer les caractères de sch et ch un à un, et retourner VRAI si tu atteins la fin de sch ou le compte n sans avoir vu de différence (la 'vraie' fonction strncmp te dit si une chaine est supérieure à l'autre, mais ici ce n'est pas ton problème)
          1. voila ce ke g fait !
            #include<stdio.h>
            #include<conio.h>
            #include<string.h>
            void main()
            {
            char *ch,*sch,*debut ;
            int n=0,etat=0,j;
            clrscr();
            printf("entrez la chaine : \t");
            gets(ch); debut=ch;
            printf("entrez la sous-chaine : \t");
            gets(sch);
            //la langeur de la sous-chaine
            while(*sch++)
            {
            n++;
            }
            for(j=0;j<=n;j++)
            sch--;

            //recherche de la sous-chaine
            while(*sch&&etat==0&&*ch)
            {

            if (strncmp(sch,ch,n)!=0 )
            ch++;
            else
            etat=1;
            }

            if(etat==1) puts(ch);
            else puts("\n la sous-chaine n'existe pas !!");
            getch();
            }

            mais le problem c ke g utiliser strncmp et il fo la reecrir aussi et moi g su ecrir ke strcmp mais strncmp je c pa cmt fair :s
            1. Est-ce que je dois comprendre que tu as à faire un exercice qui consiste à écrire une fonction qui recherche une sous-chaîne dans une chaîne, comme strstr ?
              Si c'est la cas, c'est ton travail : montre ce que tu as commencé à faire, il y aura ici plein de gens pour te guider, te corriger - pas pour faire ton travail à ta place.
              Si ce n'est pas le cas, explique-nous l'intérêt de la manip.
              1. beh moi tous simplement je veux fair la fonction strstr
                comment la developer ???
                merci
                1. Tu peux toujours l'ouvrir avec un éditeur hexadécimal, mais ça ne t'aidera pas beaucoup. Le code objet est fait pour être lu par les machines, pas les humains.
                  1. ok merci
                    mais meme "lib" paske c un .obj je peu pa l oubrir ni le lire :s che pas avc kilprogrameon peu l ouvrir
                    1. Bonjour,

                      Qu'appelles-tu avoir toute la fonction ?
                      Le code objet est dans une des bibliothèques (.lib) fournies avec le compilateur.
                      Le code source, les fabriquants de compilateurs (sauf open source) ne le rendent pas public.

                      Discussions similaires

                      recode strstr en C

                      2 réponses