Programmation en C , inversement chaines

Résolu
capa57 Messages postés 383 Statut Membre -  
capa57 Messages postés 383 Statut Membre -
Bonjour,

J'ai un tableau de caractères en C , je demande à l'utilisateur de saisir une chaîne au clavier... il prends cette chaîne l'inverse et la met dans un deuxième tableau

J'ai essayé de faire ceci mais ça ne fonctionne pas...

char inverse_chaine(const char chaine[MAX], char inv[MAX])
{
#include <stdio.h>
#include <string.h>

int i, taille, j;

taille = longueur_chaine(chaine);
i = taille;

for (i= taille; i=0; i--){

inv[j] = chaine[i];
j++;

printf("test %s", inv);

}

}



ensuite j'appelle ma fonction dans mon main :

********************************************
int main(int argc, char *argv[])
{
char chaine1[MAX]; //declaration tableau
char inverse_chaine1[MAX];

inverse_chaine(chaine1, inverse_chaine1);
printf("chaine inverse: %s \n", inverse_chaine1);

...
...
}
********************************************

et voilà le résultat ...

test // ce que l'utilisateur tape au clavier
chaine : test //affichage de ce que l'utilisateur tape au clavier
taille de la chaine = 4 // taille de la chaîne saisie
chaine inverse: aaaaaAAaaaAaaaaaAaaAaaa-GCCLIBCYGMING-EH-TDM1-SJLJ-GTHR-MINGW32


Process returned 81 (0x51) execution time : 1.390 s
Press any key to continue.


Voilà il me retourne un truc totalement incohérent...
je plane need help ^^

3 réponses

fiddy Messages postés 11653 Statut Contributeur 1 847
 
Bonjour,

Tout d'abord, il faut inclure #include <stdio.h> et cie dans les premières lignes et non dans un corps de fonction.

taille = longueur_chaine(chaine);
Qu'est-ce que longueur_chaine() ? Il nous faudrait son code, il y a peut-être une erreur aussi à ce niveau.
i = taille;
Inutile puisque tu remets i=taille dans le for.

j++;
Oui, mais que vaut j ? Il n'a jamais été initialisé, sa valeur est donc bidon. Il suffit de mettre j=0 avant le for. C'est cette erreur-là qui te fait tout bugguer.

Cdlt,
0
capa57 Messages postés 383 Statut Membre 13
 
J'ai essayé ça mais ça ne fonctionne toujours pas... dans mon résultat il ne m'affiche rien du tout

void inverse_chaine(const char chaine[MAX], char inv[MAX])
{
int i=0, taille, j=0;

taille = longueur_chaine(chaine);
i = taille;
for (i= taille; i>0; i--){
inv[j] = chaine[i];
j++;
}
}



ma fonction longueur chaine est équivalente à strlen en fait je me suis juste amusé à la créer moi même

int longueur_chaine(const char tab[MAX])
{
int i;
for (i = 0; tab[i] != '\0'; i++);
return i;
}
0
capa57 Messages postés 383 Statut Membre 13
 
AHHHHH j'ai trouvé ... il fallait que j'initialise mon tableau en fait :/ (erreur bidon :( )

voici le code

void inverse_chaine(const char chaine[MAX], char inv[MAX])
{
int i = 0;
int j =longueur_chaine(chaine)-1;
for (i = 0 ; i < MAX ; i++)
{
inv[i] = 0;
}
for(i=0;chaine[i]!='\0';i++)
{
inv[i]=chaine[j];
j--;
}
}


// appel de la fonction dans le main

inverse_chaine(chaine1, inverse_chaine1);
printf("chaine 1 : %s\n chaine inverse: %s \n\n", chaine1 , inverse_chaine1);

merci ^^
0