Réponse acceptée !
Tu as juste oublié de retourner un cran en arrière quand tu atteinds le \0. Sinon tu mets le 0 en première position quand tu inverses et forcément aucune chaine ne s'affiche.
Je te propose ceci (non optimisé, mais un peu plus découpé en petites fonctions):
Code C/C++ :
#include <stdio.h>
void swap(char* a, char* b)
{
char tmp;
tmp = *a;
*a = *b;
*b = tmp;
}
void invertWord(char* word)
{
char* p1 = word;
char* p2 = word;
while (*p2 != '\0')
++p2;
--p2;
while (p1 < p2)
{
swap(p1, p2);
++p1;
--p2;
}
}
void display(char tab[3][50])
{
int i = 0;
for (i = 0; i < 3; ++i)
{
printf("%s ", tab[i]);
}
printf("\n");
}
int main(void)
{
char tab[3][50];
int i;
for (i = 0; i < 3; ++i)
{
printf("donner le %d element du tableau\n", i);
scanf("%s", tab[i]);
}
display(tab);
for (i = 0; i < 3; ++i)
invertWord(tab[i]);
display(tab);
return 0;
}
_____________________________________________
Historique de mes créations, et quelques articles:
http://0217021.free.fr/portfolio