Pb pointeur en C

Blaze -  
sfel Messages postés 1645 Statut Membre -
Bonjour,

J'ai un petit souci avec les pointeurs.
Le code ci-après permet d'inverser les caractères de la chaine du tableau de caratères Tab[21].
Je ne comprends pas comment la ligne
puts(Tab);
récupere le traitement effectué par les pointeurs ptr1 et ptr2.

Est-ce que quelqu'un peut m'expliquer.

Merci pour votre aide.

#include <stdio.h>
int main()
{
char Tab [21]= {"Ceci est un exemple"};
char *ptr1, *ptr2;
char temp;

ptr1=ptr2=Tab;

while (*ptr2) ptr2++;
ptr2--;
while(ptr1<ptr2)
{
temp=*ptr1;
*ptr1=*ptr2;
*ptr2= temp;
ptr1++;
ptr2--;
}
printf("\n\n ");
puts(Tab);

printf("\n\n");
return 0;
}
Configuration: Windows XP
Internet Explorer 6.0

12 réponses

  1. sfel Messages postés 1645 Statut Membre 430
     
    bonjour

    puts, sert a afficher des chaines de caractères.

    ca reviens a avoir fais

    printf("%s", Tab);
    0
  2. Blaze
     
    Bonjour Sfel

    Oui ,je sais que puts permet d'afficher les chaines de caratères.
    Dans mon cas, ce que je ne comprends pas c'est comment les pointeurs ptr1 et ptr2
    ont modifié le contenu du tableau TAB puisqu'i n y a aucune instruction pour cela après le
    bloc du while.
    0
  3. dubcek Messages postés 18627 Date d'inscription   Statut Contributeur Dernière intervention   5 660
     
    char Tab [21]= {"Ceci est un exemple"};
    char *ptr1, *ptr2;

    ptr1=ptr2=Tab;

    temp=*ptr1; c'est équivalent à temp=Tab[0] ;

    en incrémentant ptr ptr++, c'est comme utiliser Tab[n] ;

    ptr c'est le pointeur (l'adresse de Tab) et *ptr c'est le contenu, donc 1 caractère
    0
  4. sfel Messages postés 1645 Statut Membre 430
     
    #include <stdio.h>
    int main()
    {
    char Tab [21]= {"Ceci est un exemple"};
    int i, j;
    char temp;
    
    i=0;
    j=0;
    
    while (tab[j]) j++;
    j--;
    while(i<j)
    {
    temp=Tab[i];
    Tab[i]=Tab[j];
    Tab[j]= temp;
    i++;
    j--;
    }
    printf("\n\n ");
    puts(Tab);
    
    printf("\n\n");
    return 0;
    }


    je te donne l'équivalent sans les pointeurs
    pour que tu comprenne la logique
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. Blaze
     
    OK! Tout est clair et ça encourage à continuer l'apprentissage.

    Grand Merci à Sfel et Dubcek.
    0
  7. sfel Messages postés 1645 Statut Membre 430
     
    de rien
    0
  8. dubcek Messages postés 18627 Date d'inscription   Statut Contributeur Dernière intervention   5 660
     
    prochain exercice, les pointeurs sur des fonctions qui retournent des tableaux de pointeurs sur des scructures ... :-))
    0
  9. sfel Messages postés 1645 Statut Membre 430
     
    après des listes dynamiques.

    et le C++ ^^
    0
  10. dubcek Messages postés 18627 Date d'inscription   Statut Contributeur Dernière intervention   5 660
     
    et tout à la fin ... installer windoze
    0
  11. sfel Messages postés 1645 Statut Membre 430
     
    nan, créer windoze

    allez tu as jusqu'à jeudi ^^
    0
  12. sfel Messages postés 1645 Statut Membre 430
     
    loool

    tin bill m'as copié

    j'avai passé les miens en rouge sous 98, et XP ^^

    et lui m'as copié dans Vista tsss

    par contre quand un pote viens et qu'il voi l'écran rouge, il flippe + que pour un bleu ^^
    0