Bonjour à tous, je voudrais inverser une chaine de caractère
exemple : je rentre ceci dans un tableau de chaine --> hello
et je dois avoir comme résultat --> olleh
Merci pour vos réponses.
Version imprimable
Bonjour à tous, je voudrais inverser une chaine de caractère
exemple : je rentre ceci dans un tableau de chaine --> hello
et je dois avoir comme résultat --> olleh
Merci pour vos réponses.
tu ne trouves pas l'algorithme ou il te manque des fonctions ?
si tu veux le faire tu auras besoin de connaître la longueur de la chaîne, par ex. avec strlen()
(sauf si tu te la fixes)
Et ce n'est pas assez précis, tu veux afficher la chaîne à l'envers ou écrire dans une autre chaîne ou écrire dans la même ?
Dans tout les cas, écris d'abord l'algo en "pseudo code" et reviens si tu as des problèmes.
Voici le code que je viens de réalisé :
Mon petit problème est le suivant, quand je tape hello, il m'inverse bien la chaine, mais il me laisse un petit carré noir au début de la chaine, comment pourrais je faire pour qu'il ne s'affiche plus, merci bcp.Citation:
#include<stdio.h>
#include<string.h>
#define T_LONG 50
void main (void)
{
int i=0 ;
char fvect[T_LONG] ;
printf("Tapez une chaine de caractères : ");
gets(fvect);
for (i=strlen(fvect) ; i >= 0 ; i--)
{
putchar(fvect[i]);
}
}
Tu as oublié de poster le code avec lequel tu as un problème...Citation:
Envoyé par IDE
D'abord utilise les balises Code et /Code et non pas les balises citations.
Ensuite, la fonction main retourne un int.
Ensuite, tu te trompes, il ne faut pas commencer à strlen(fvect) mais strlen(fvect) - 1, je te rappelle que les tableaux en C commencent à 0 et que si la longueur d'une chaîne est 7, les caractères vont de 0 à 6 et que le 8 eme caractères (numéroté 7) vaut '\0' !
Enfin, n'utilise pas gets qui est un bug bien connu (pas de test de la longueur saisie).
Je viens de le poster, merci :yaisse2:
Vice les messages qui s'entrecroisent :lol:
Probablement un problème d'indice. Vérifie comment varient les indices. Je rappelle que dans une chaine de N caractères, les indices valides vont de 0 à N-1.Citation:
Envoyé par IDE
Merci pour les infos, c'est bien sympa de ta part, passe une bonne nuit.
Tu devrais plutot partir sur l'idée d'écrire une fonction qui a partir d'une chaine de caractère passée en paramètre renvoi une chaine inversée.
Je partirais sur le prototype suivant :
Code:char * str_reverse(const char * pstrInit);
Et je l'utiliserai comme cela :
Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 #define T_LONG 50 int main() { char fvect[T_LONG]={0} ; char * fvectinverse=NULL; //saisie de la chaine au clavier //on inverse la chaine fvectinverse=str_reverse(fvect); // on réalise un affichage printf("Chaine initiale : %s\n Chaine inversee : %s\n",fvect,fvectinverse); return 0; }
A qui t'adresses-tu ?Citation:
Envoyé par IDE