Supprimer un mot d'une chaîne de caractère
Résolu
hymenoptera
Messages postés
37
Statut
Membre
-
hymenoptera Messages postés 37 Statut Membre -
hymenoptera Messages postés 37 Statut Membre -
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 :
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 :
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 :
j'ai aussi récupérer les lignes qui contiennent <cheminX> à l'aide de
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 :)
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 :)
A voir également:
- Supprimer un mot d'une chaîne de caractère
- Supprimer rond bleu whatsapp - Guide
- Supprimer une page word - Guide
- Caractère ascii - Guide
- Trousseau mot de passe iphone - Guide
- Caractère spéciaux - Guide
2 réponses
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.
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 ) );
}