fiorellafatma
Messages postés6Date d'inscriptionmardi 18 mai 2010StatutMembreDernière intervention23 mai 2010
-
21 mai 2010 à 23:10
fiorellafatma
Messages postés6Date d'inscriptionmardi 18 mai 2010StatutMembreDernière intervention23 mai 2010
-
22 mai 2010 à 20:56
salut à tous je cherche à inverser les caractère
des mot dans un tableau de mot voici montravail qui n'a pas marché et je vous demande de l'aide
salut à tous
#include<stdio.h>
void main ()
{
char tab[3][50],*p1,*p2,aide;
int i;
for(i=0;i<3;i++)
{
printf("donner le %d élément du tableau\n",i);
gets(*(tab+i));
cptpingu
Messages postés3837Date d'inscriptiondimanche 12 décembre 2004StatutModérateurDernière intervention28 mars 2023123 22 mai 2010 à 14:05
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):
#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;
}