Supprimer un mot d'une chaîne de caractère

[Résolu/Fermé]
Signaler
Messages postés
36
Date d'inscription
mercredi 24 août 2016
Statut
Membre
Dernière intervention
18 décembre 2018
-
Messages postés
36
Date d'inscription
mercredi 24 août 2016
Statut
Membre
Dernière intervention
18 décembre 2018
-
Bonjour,

Je pensais trouver la réponse facilement sur le net, mais après plusieurs recherches infructueuses j'ai décidé de poser une question. Je m'excuse par avance si le sujet a déjà été abordé je vous avoue que je ne l'ai pas trouvé !

J'ai un problème assez simple à comprendre :

J'ai une chaîne de caractère par exemple :
char phrase [taille] = "je suis entrain de poser une question"


je veux enlever par exemple "suis entrain de"

Comment je peux faire ça en C ?

Je vous remercie,

--------------------------
NB :

j'expose mon vrai problème peut être qu'il y a une meilleur façon de faire :

j'ai un fichier de paramètre où je veux rentrer des chemins, ex :

parametre.txt

<chemin1> /home/dossier1/ici/blabla
<chemin2> /usr/bin/gcc
<chemin3> /usr/lib/my_lib.so

.etc ....


Je veux récupérer uniquement ce qui se trouve après le <cheminX> et le stocker dans une variable "MY_PATH_X".

Pour élaborer un peu mon fichier de paramètre j'ai mis une condition sur mes lignes pour mettre des commentaires et ignorer les lignes vide avec :

if (strstr(ligne, "#") == NULL && ligne[0] != '\n' )  


j'ai aussi récupérer les lignes qui contiennent <cheminX> à l'aide de
 if (strstr(ligne, "<chemin1>") != NULL) 
strcpy (MY_PATH_1, ligne)


maintenant je veux supprimer le mot <cheminX> pour ne garder que le path...

Il y a quelques modifications à faire notamment pour les commentaires avec #, car comme ce que j'ai fait toute la ligne est ignorée même si le # est écrit au milieu...
mais ça ce n'est pas urgent pour le moment

Si vous avez aussi des suggestions de bonnes pratiques ou des erreurs à éviter je suis preneuse :)

Merci pour votre temps :)

2 réponses

Messages postés
579
Date d'inscription
dimanche 7 février 2016
Statut
Membre
Dernière intervention
16 juillet 2021
79
Bonjour,

Pour supprimer un morceaux de texte, il suffit de copier la fin restante du texte à la position du morceau à supprimer.
La fonction strcpy() n'est pas utilisable ici, on doit utiliser memmove() à la place.
char  phrase[] = "je suis en train de poser une question";
char const  *aSupprimer = "en train de ";
char  *position = strstr( phrase , aSupprimer );
if ( position ) {
    unsigned  lgSupprimee = strlen( aSupprimer );
    memmove( position , position+lgSupprimee  , 1 + strlen( position+lgSupprimee ) );
}
1
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 65492 internautes nous ont dit merci ce mois-ci

Messages postés
36
Date d'inscription
mercredi 24 août 2016
Statut
Membre
Dernière intervention
18 décembre 2018
1
SUPER !!!!

Merci beaucoup Dalfab,
ça marche :)