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

                      Discussions similaires

                      recode strstr en C

                      2 réponses