10 réponses
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.
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.
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
mais meme "lib" paske c un .obj je peu pa l oubrir ni le lire :s che pas avc kilprogrameon peu l ouvrir
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.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
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.
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.
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
#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
ç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)
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)
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
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
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;
}
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;
}
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();
}
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();
}