J'essaie d'implémenter une fonction pour supprimer une sous-chaîne d'une chaîne avec memmove. Lors de l'impression des résultats, il semble que je n'ai pas correctement déplacé les sous-chaînes, même s'il semble que j'ai utilisé la bonne position dans la chaîne source. Ma fonction est:Supprimer une sous-chaîne d'une chaîne avec memmove dans C
char * removeSubStr(char * str, const char * substr){
char *scan_p, *temp_p;
int subStrSize = strlen(substr);
if (str == NULL){
return 0;
}
else if (substr == NULL){
return str;
}
else if (strlen(substr)> strlen(str)){
return str;
}
temp_p = str;
while(scan_p = strstr(temp_p,substr)){
temp_p = scan_p + subStrSize;
memmove(scan_p, temp_p, sizeof(temp_p)+1);
}
return str;
}
Ma sortie, par exemple: si l'envoi de la chaîne "s'il vous plaît supprimer rem supprimer rem999", Je reviens: "s'il vous plaît Ove rm ovmove re 999"
Merci!
(Rien à voir avec votre problème, mais vous devez tester '== substr null' avant de passer' 'substr' à strlen' Sinon, vous pourriez finir par appeler. 'strlen' sur un pointeur nul.) –