Tableau de chaine de caractère [Résolu]

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





}
Afficher la suite 

Votre réponse

2 réponses

Meilleure réponse
Messages postés
3829
Date d'inscription
dimanche 12 décembre 2004
Dernière intervention
5 novembre 2018
- 22 mai 2010 à 14:05
3
Merci
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]

Merci cptpingu 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 88 internautes ce mois-ci

Commenter la réponse de cptpingu
Messages postés
6
Date d'inscription
mardi 18 mai 2010
Dernière intervention
23 mai 2010
- 22 mai 2010 à 20:56
0
Merci
salut à tous
merci pour l'aide c'est vraiment gentil
Commenter la réponse de fiorellafatma

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.