Tableau de chaine de caractère

Résolu
fiorellafatma Messages postés 6 Date d'inscription mardi 18 mai 2010 Statut Membre Dernière intervention 23 mai 2010 - 21 mai 2010 à 23:10
fiorellafatma Messages postés 6 Date d'inscription mardi 18 mai 2010 Statut Membre Dernière intervention 23 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));

}
for(i=0;i<3;i++)
{
puts(*(tab+i));
}
p1=(char*)tab;
p2=(char*)tab;
for(i=0;i<3;i++)
{
while(*p2 !='\0')
p2++;
while(p1<p2)
{
aide=*p1;
*p1=*p2;
*p2=aide;
p1++;
p2--;
}

p1=(char*)(tab+i);
p2=(char*)(tab+i);
}
for(i=0;i<3;i++)
{
puts(*(tab+i));
}





}

2 réponses

cptpingu Messages postés 3837 Date d'inscription dimanche 12 décembre 2004 Statut Modérateur Dernière intervention 28 mars 2023 123
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;
}


_____________________________________________
Historique de mes créations, et quelques articles:[ http://0217021.free.fr/portfolio
http://0217021.free.fr/portfolio]
3
fiorellafatma Messages postés 6 Date d'inscription mardi 18 mai 2010 Statut Membre Dernière intervention 23 mai 2010
22 mai 2010 à 20:56
salut à tous
merci pour l'aide c'est vraiment gentil
0
Rejoignez-nous