[C++] inserer un caractere dans une chaine...

Résolu/Fermé
Vidarce Messages postés 6 Date d'inscription lundi 27 novembre 2000 Statut Membre Dernière intervention 17 août 2010 - 2 janv. 2007 à 21:31
Stupeflip Messages postés 391 Date d'inscription jeudi 8 février 2007 Statut Membre Dernière intervention 4 décembre 2007 - 28 mars 2007 à 10:56
Bonjour à tous,
Je bloque depuis un bon moment sur un programme que je dois faire pour les cours. Rassurez vous, je ne vous demande pas de me donner un code source tout prêt !!

J'ai besoin uniquement d'une chose :
J'aimerais savoir comment il faut faire pour inserer un caractere dans une chaine de caractere existante !!

J'ai creer une chaine de 80 caractere, l'utilisateur ne peut en rentrer que 78 (ce qui me laisse la place pour mettre le caractere + le \0).

Je pensais avoir trouver la méthode mais celle ci ne semble pas marcher :D
Je comptais décaler ma chaine de caractere en partant de la fin jusqu'à atteindre la position où je veux inserer le caractere mais cela ne marche pas.

Pour être précis, voilà ce que je voudrais faire :
Inserer un caractere x à une position p dans la chaine ch :
voici ma fonction creer pour faire cela mais elle ne fonctionne pas :

void Insere(char * ch, char x, int p)
{
int i;
for(i=strlen(ch);i>=p;i--);
{
ch[i+1]=ch[i];
}
ch[p]=x;
}

Merci d'avance.
A voir également:

5 réponses

Vidarce Messages postés 6 Date d'inscription lundi 27 novembre 2000 Statut Membre Dernière intervention 17 août 2010 2
3 janv. 2007 à 11:38
merci mille fois, je dois avouer que je ne l'avait pas vu celle la !!!!
2
Char Snipeur Messages postés 9696 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 1 297
28 mars 2007 à 10:41
et moi je veux10.000€!
Apprend à lire, la réponse est dans le premier message, il suffit d'enlever le ';' après le for.
La prochaine foi avant de poster un message : lit ce qui est écrit, et demande moins impérativement !
2
Char Snipeur Messages postés 9696 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 1 297
3 janv. 2007 à 10:19
Salut.
Bordel, j'ai eu du mal pour trouver une erreur à la con comme celle ci !
il ne faut pas de ';' après le for! dans ce cas là tu fait une boucle sans rien faire.
Du coup quand tu arrive au premier ch[i+1] i vaut déjà p et tu ne change qu'un caractère.
Une fois ce ';' retirer ça fonctionne très bien : bon algo.
Un conseil, pour éviter ce genre d'erreur à l'avenir déclare tes variable de boucle dans la boucle :
for(int i=strlen(ch);i>=p;i--)
en écrivant ça, le compilo doit te dire que tu fait un appel à i en dehors de la boucle et que ça va pas.
1
Stupeflip Messages postés 391 Date d'inscription jeudi 8 février 2007 Statut Membre Dernière intervention 4 décembre 2007 94
28 mars 2007 à 10:56
C'est clair que c'est si gentiment demandé....
Enfin bon Salut déjà, puis essaye strcat ou pourquoi pas sprintf...
1

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

Posez votre question
karimovy Messages postés 9 Date d'inscription mardi 27 mars 2007 Statut Membre Dernière intervention 12 octobre 2017 4
28 mars 2007 à 10:20
je veut savoir la fct qui insere 1 mot dans 1 chaine de caractere. merci
0