Remplacer les derniers caractère d'une chaine

SniperZ_Master Messages postés 2 Date d'inscription vendredi 21 septembre 2007 Statut Membre Dernière intervention 21 septembre 2007 - 21 sept. 2007 à 04:33
SAKingdom Messages postés 3212 Date d'inscription lundi 7 novembre 2005 Statut Membre Dernière intervention 16 février 2009 - 25 sept. 2007 à 23:22
Bonjour, je débute en C++ en ce moment mais je n'y connais encore pratiquement rien à ce langage. J'utilise visual studio 2005.

En fait, je veux créer un programme simple
capable de remplacer les derniers caractères d'une chaine par autre chose.

À l'exécution, je devrais avoir quelque chose comme ceci: (si le programme marche)


Entrez une phrase : Bonjour tout le monde
La phrase modifiee est : Bonjour tout le moxxx


Bref, en gros, on demande à la personne d'entrer une phrase et après que la personne ait entré sa phrase, je veux que les trois derniers caractères soit remplacer par "xxx" (ou autre chose peu importe)

Comment faire ? C'est quoi le code que je dois utiliser ? Je mets quoi dans #include ?

Bon, je vous dit encore que je suis vraiment, non mais vraiment débutant...alors c'est peut-être simple, mais j'y arrive pas.

14 réponses

SAKingdom Messages postés 3212 Date d'inscription lundi 7 novembre 2005 Statut Membre Dernière intervention 16 février 2009 15
21 sept. 2007 à 04:59
Commence par lire un livre. Ce que tu demande est la base. Si tu ne la maitrise pas, inutile de te lancer immédiatement dans le développement, tu ne fera que tourner en rond.

Va voir à cette adresse pour des tuto de C (mieux vaut commencer par le C):
http://c.developpez.com/cours/

C++ (@++)<!--
0
deck_bsd Messages postés 1243 Date d'inscription jeudi 31 mars 2005 Statut Membre Dernière intervention 3 août 2016 2
21 sept. 2007 à 09:08
Yop,

Je ne dirait pas mieu que SAKingdom. Si tu veu programmer, il faut connaitre les bases et ce que tu demande c'est vraiment à la base.

++
deck_bsd
___________________________________
[http://deck-bsd.eurower.net]
0
The_Guardian Messages postés 317 Date d'inscription vendredi 25 mai 2007 Statut Membre Dernière intervention 19 octobre 2007 1
21 sept. 2007 à 10:02
Bonjour,

Est-ce que tu sais programmer dans d'autres langages deja ?
Ensuite pour faire ce genre de choses, tu ne vas pas avoir besoin de beaucoup d'includes, juste ce qui est necessaire pour afficher des chaines à l'ecran ou les lire au clavier.
Tente deja d'afficher le nombre de caracteres de la chaine, puis ensuite de remplacer le dernier caractère seulement par un x
=

Une autruche ne se cuit pas aux petits lardons
0
acx01b Messages postés 280 Date d'inscription dimanche 7 septembre 2003 Statut Membre Dernière intervention 8 juillet 2014 6
21 sept. 2007 à 10:18
salut

une chaine de caractère peut être vue comme un tableau (avec un caractère dans chaque case)

char chaine[16] = "bonjour";
chaine[0] vaut 'b'
chaine[1] vaut 'o'
...

pour connaitre la taille de chaine tu peux faire comme cela:
int i = 0;
while (chaine[i] != '\0') i++; // tant que la ième case ne contient pas '\0', incrémenter i
// i vaut maintenant 7 !
chaine[i-1] = 'x';
chaine[i-2] = 'x';
chaine[i-3] = 'x';
et tu as remplacé les 3 derniers caractères de ta chaine par des x
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
SniperZ_Master Messages postés 2 Date d'inscription vendredi 21 septembre 2007 Statut Membre Dernière intervention 21 septembre 2007
21 sept. 2007 à 13:15
Merci beaucoup pour vos réponses.

Et merci à SAKingdom pour le site c'est vraiment bien et surtout très pratique.

Pour ce qui de acx01b, ce que tu écris a du sens,
toutefois, en écrivant char chaine[16], peu importe la phrase que tu entres, ça va changer que les 3 derniers caractères du premier mot. Parce que avec (char), il s'arrête dès qu'il y a un espace.

Donc, si dans la chaine il y a "bonjour les amis"
et bien le résultat va donner: "bonjxxx"

Voilà, en tout cas merci encore.
0
SAKingdom Messages postés 3212 Date d'inscription lundi 7 novembre 2005 Statut Membre Dernière intervention 16 février 2009 15
21 sept. 2007 à 13:47
Non, il s'arrêtera au 0 de fin de chaine (donc à la fin). Il remplacera bien les 3 dernières lettre.

char test[] = "bonjour les amis", *c = test;

while(*c) c++;*--c 'x'; *--c 'x'; *--c = 'x';

Les 3 derniers caractères seront xxx.

C++ (@++)<!--
0
Kypper_667 Messages postés 15 Date d'inscription samedi 22 mai 2004 Statut Membre Dernière intervention 10 octobre 2008
25 sept. 2007 à 21:32
Non utilise plutôt les string pour faire cela...

#include <string>

string test = "Bonjour tout le monde";

test = test.substr(0,test.size()-3)+"xxx";
0
SAKingdom Messages postés 3212 Date d'inscription lundi 7 novembre 2005 Statut Membre Dernière intervention 16 février 2009 15
25 sept. 2007 à 21:49
Non surtout pas.

Apprend d'abord à utiliser les pointeurs char (et autre).
Après on verra. Tu t'apercevra probablement que les string (et autre classe dans le genre), on peut très bien s'en passer.

C++ (@++)<!--
0
Kypper_667 Messages postés 15 Date d'inscription samedi 22 mai 2004 Statut Membre Dernière intervention 10 octobre 2008
25 sept. 2007 à 22:40
En c++, il vaut mieux utiliser les strings, c'est plus pratique ;)

Sinon utilise les char et tu verras que les strings sont bien mieux...

Après si tu veux programmer en c c'est autre chose...

Un programmeur c++ doit utiliser la programmation objet sinon c'est un programmeur c ;)
0
SAKingdom Messages postés 3212 Date d'inscription lundi 7 novembre 2005 Statut Membre Dernière intervention 16 février 2009 15
25 sept. 2007 à 22:57
Pas du tout.

C++, ce n'est pas du Java.

Si on ne veut pas utiliser le poids lourd qu'est la classe string (car oui, cette classe est très lourde), c'est notre choix. Ça ne fait pas de nous un programmeur non-objet.

string est plus simple mais aussi plus lente et supprime le contrôle de la mémoire au programmeur ce qui peut ralentir encore davantage les traitements.

C++ (@++)<!--
0
Kypper_667 Messages postés 15 Date d'inscription samedi 22 mai 2004 Statut Membre Dernière intervention 10 octobre 2008
25 sept. 2007 à 23:07
Pas du tout on peut utiliser des pointeurs sur des string et ne pas en utiliser pour les char...

Mais souvent on a pas besoin de pointeur pour les strings (sauf quelque fois) car si on doit le faire avec les char c'est pour les passer en paramètres dans les fonctions faites pour cela or avec les strings il n'y a pas ce problème...
0
Kypper_667 Messages postés 15 Date d'inscription samedi 22 mai 2004 Statut Membre Dernière intervention 10 octobre 2008
25 sept. 2007 à 23:09
Fin bon peu importe de toutes façons, cette discussion est close pour moi bye ;)
0
Kypper_667 Messages postés 15 Date d'inscription samedi 22 mai 2004 Statut Membre Dernière intervention 10 octobre 2008
25 sept. 2007 à 23:15
Oui car avec les char tu dois choisir la taille du tableau de caractère donc il y a bien une gestion particulière de la mémoire à ce niveau mais les string ne sont pas vraiment plus lentes vu les ordinateurs qu'il y a de nos jours on est plus dans les années 70 au moment ou est sorti le langage c et où il fallait des programmes très optimisés pour aller avec la faible puissance des ordis de l'époque fin bref voilà

a++
0
SAKingdom Messages postés 3212 Date d'inscription lundi 7 novembre 2005 Statut Membre Dernière intervention 16 février 2009 15
25 sept. 2007 à 23:22
Ah non alors. Ce n'est pas une excuse. Autant faire du Java, C# ou autre interprété si la vitesse d'exécution n'est pas important.

Pour te montrer la lenteur des string:
Exemple:
char buf[] = "Bonjour": // <- Tu ne peux avoir plus rapide

string buf = "Bonjour"; // Calcule de la taille de la chaine
                                    // + allocation mémoire
                                  // + copie de la chaine dans le string
                                  // En somme, très grosse perte de temps pour peux

Et encore, je ne parle pas de la concaténation.

Voilà. Je ne m'étirai pas davantage sur le sujet. Je crois que j'ai exposé l'essentiel.
Bonne continuation.

C++ (@++)<!--
0
Rejoignez-nous