Pb pointeur en C
Blaze
-
sfel Messages postés 1640 Date d'inscription Statut Membre Dernière intervention -
sfel Messages postés 1640 Date d'inscription Statut Membre Dernière intervention -
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;
}
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;
}
A voir également:
- Pb pointeur en C
- Pointeur souris - Guide
- Curseur Windows 10 : comment bien voir la souris à l'écran - Guide
- Le pointeur de mon pc portable ne marche plus - Guide
- Pointeur laser publicitaire ✓ - Forum Loisirs / Divertissements
- Pointeur souris avec rond de chargement qui clignote sans arrêts ✓ - Forum Windows
12 réponses
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.
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.
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
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
#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
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
prochain exercice, les pointeurs sur des fonctions qui retournent des tableaux de pointeurs sur des scructures ... :-))
et ne pas oublier les options facultatives obligatoires : https://fr.wikipedia.org/wiki/%C3%89cran_bleu_de_la_mort