Bonjour à tous,
Voici mon code source dans lequel j'ai deux problèmes probablement liés :
void Remplace(char *strChaine,char *strRecherche,char *strRemplace)
{
char *pstrChaine,*pstrResultat;
long nLongRecherche,nLongRemplace;
char strResultat[4096];
memset(strResultat,0,sizeof(strResultat));
pstrChaine =strChaine;
pstrResultat=strResultat;
nLongRecherche=strlen(strRecherche);
nLongRemplace =strlen(strRemplace);
while (pstrChaine!=NULL)
{
if(!memcmp(pstrChaine,strRecherche,nLongRecherche))
{
pstrChaine=pstrChaine + nLongRecherche;
memmove(pstrResultat,strRemplace,nLongRemplace);
pstrResultat=pstrResultat + nLongRemplace;
}
else
{
*pstrResultat=*pstrChaine;
pstrChaine++;
pstrResultat++;
}
}
strcpy(strChaine,strResultat);
}
Principe de la fonction : Remplace dans ma chaine strChaine la chaine strRecherche par la chaine strRemplace
J'ai un problème de core dumped sur cette fonction et plus précisement (grâce à gdb) au niveau de la ligne if(!memcmp(pstrChaine,strRecherche,nLongRecherche)).
En analysant j'ai deux problèmes, d'une part le while ne s'arrète jamais d'où le core dumped et d'autre part j'ai l'impression que le memcmp ne marche pas.
Voici comment la fonction est appelée :
strRequete[4096];
memset(strRequete, 0, sizeof(strRequete));
...
...
..
Remplace(strRequete,"min(","" ); // en gros je supprime le min( de ma requête
Merci d'avance pour votre aide