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. 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.
    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. 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. beh moi tous simplement je veux fair la fonction strstr
          comment la developer ???
          merci
          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. 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. ç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. 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. 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. 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();
                      }

                      Discussions similaires

                      recode strstr en C

                      2 réponses