long DBI_remplace_chaine_tous(char *chaine, char *rech, char *_new)
{
char *token;
char chaine_tmp[6000];
char chaine_deb[6000];
int flag;
int lng_rech;
int lng_rech_1;
/* on teste les valeurs particuliere de rech */
flag = 0;
lng_rech = (int)strlen(rech);
lng_rech_1 = lng_rech - 1;
if (lng_rech == (size_t) 0) return(TRUE);
if (rech[0] == '^') flag = 1;
if (rech[lng_rech_1] == '$') flag = 2;
switch(flag)
{
case 0:
strcpy(chaine_deb,chaine);
token = strstr(chaine_deb, rech);
if (token == (char *)0) return(FALSE);
strcpy(chaine_tmp,"");
do
{
chaine_deb[strlen(chaine_deb) - strlen(token)] = 0;
strcat(chaine_tmp, chaine_deb);
strcat(chaine_tmp, _new);
/* on est sûr que lng_rech est inférieur à strlen(token)
car token contient rech_tmp */
strcpy(chaine_deb,token+lng_rech);
token = strstr(chaine_deb,rech);
if (token == (char *)0)
{
strcat(chaine_tmp,chaine_deb);
break;
}
} while (token != NULL);
break;
case 1:
if (lng_rech_1 <= 0) return(FALSE);
strcpy(chaine_tmp, _new);
strcat(chaine_tmp, chaine + lng_rech_1);
break;
case 2:
if (lng_rech_1 <= 0) return(FALSE);
strcpy(chaine_tmp, chaine);
strncpy(chaine_tmp + (strlen(chaine) - lng_rech_1) , _new , lng_rech_1);
break;
}
strcpy(chaine, chaine_tmp);
return(TRUE);
}
Partager