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.
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.
#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...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).
"La haine seule fait des choix" - Koan Zen
"Il ne faut pas être meilleur que les autres, il faut être meilleur que soi." Albert Jacquard
"Ceux qui savent où ils ont posé leur parapluie ne sont pas alcooliques." - pgibonne.
Faites du Prolog, ça vous changera les idées !
Ma page Prolog
Mes codes sources commentés
Mon avatar : La Madeleine à la veilleuse de Georges de La Tour
Vice les messages qui s'entrecroisent![]()
"La haine seule fait des choix" - Koan Zen
"Il ne faut pas être meilleur que les autres, il faut être meilleur que soi." Albert Jacquard
"Ceux qui savent où ils ont posé leur parapluie ne sont pas alcooliques." - pgibonne.
Faites du Prolog, ça vous changera les idées !
Ma page Prolog
Mes codes sources commentés
Mon avatar : La Madeleine à la veilleuse de Georges de La Tour
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.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 : Sélectionner tout - Visualiser dans une fenêtre à part char * str_reverse(const char * pstrInit);
Et je l'utiliserai comme cela :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 ?Envoyé par IDE
"La haine seule fait des choix" - Koan Zen
"Il ne faut pas être meilleur que les autres, il faut être meilleur que soi." Albert Jacquard
"Ceux qui savent où ils ont posé leur parapluie ne sont pas alcooliques." - pgibonne.
Faites du Prolog, ça vous changera les idées !
Ma page Prolog
Mes codes sources commentés
Mon avatar : La Madeleine à la veilleuse de Georges de La Tour
Partager