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

Résolu
Vidarce Messages postés 6 Date d'inscription   Statut Membre Dernière intervention   -  
Stupeflip Messages postés 391 Date d'inscription   Statut Membre Dernière intervention   -
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   Statut Membre Dernière intervention   2
 
merci mille fois, je dois avouer que je ne l'avait pas vu celle la !!!!
2
Char Snipeur Messages postés 9813 Date d'inscription   Statut Contributeur Dernière intervention   1 299
 
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 9813 Date d'inscription   Statut Contributeur Dernière intervention   1 299
 
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   Statut Membre Dernière intervention   94
 
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   Statut Membre Dernière intervention   4
 
je veut savoir la fct qui insere 1 mot dans 1 chaine de caractere. merci
0