Autre question sur les pointeurs

Signaler
Messages postés
56
Date d'inscription
vendredi 18 mai 2001
Statut
Membre
Dernière intervention
13 décembre 2005
-
Messages postés
113
Date d'inscription
lundi 24 février 2003
Statut
Membre
Dernière intervention
5 janvier 2004
-
Salut,

J'ai le code suivant.

#include 

char strA[27] = "abcdefghijklmnopqrstuvwxyz";

int main(void)
{
     char *pA;
     pA = new char[27];

     int i = 0;
     while (strA[i] != '\0')
     {
            *pA++ = strA[i];
             i++;
     }
     *pA = '\0'
      
     cout << pA;
 
     return 0;
}


Pour moi tout a l'air normal, si je suis le code ligne par ligne, le text de strA devrait bien se retrouver dans l'espace alloue a pA. Le probleme est que ca n'imprime rien. Quelqu'un a une idee pourquoi?

Merci d'avance.

3 réponses

Messages postés
113
Date d'inscription
lundi 24 février 2003
Statut
Membre
Dernière intervention
5 janvier 2004

Ben t'as déplacé pA -> fin de la chaîne => pA pointe sur le '\0' que t'as ajouté.
Au lieu de ta boucle fait:

strcpy(pA,strA);
cout << pA;

A bientôt,
P-A

PS: n'oublie pas le delete[] pA
Messages postés
56
Date d'inscription
vendredi 18 mai 2001
Statut
Membre
Dernière intervention
13 décembre 2005

Merci !!

T'as raison, j'ai oublie le delete [];

Le but etait de recreer strcpy, mais t'avais raison pour la fin de la chaine, alors j'ai ajoutepA -27; apres le *pA '\0' et ca marche.

Maintenant, il y a t'il une facon plus simple (automatique) de revenir au debut d'un pointer? Car si il faut suivre de combien faut le soustraire, ca doit etre melangant dans un long programme.

A+
Messages postés
113
Date d'inscription
lundi 24 février 2003
Statut
Membre
Dernière intervention
5 janvier 2004

Y'a pas de reset mais ce que tu peux faire c'est utiliser 2 ptr:
un qui restera au début (et que tu utiliseras par la suite) et un autre qui changera la valeur).

A bientôt,
P-A

PS: bon exercice de réecrire strcpy mais tu devrais essayer dans le même langage que celui avec lequel elle a été créée: l'ASM
:big)