Autre question sur les pointeurs

Darkneon Messages postés 56 Date d'inscription vendredi 18 mai 2001 Statut Membre Dernière intervention 13 décembre 2005 - 31 mars 2003 à 05:38
superpa Messages postés 113 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 5 janvier 2004 - 2 avril 2003 à 12:42
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

superpa Messages postés 113 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 5 janvier 2004
31 mars 2003 à 09:40
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
0
Darkneon Messages postés 56 Date d'inscription vendredi 18 mai 2001 Statut Membre Dernière intervention 13 décembre 2005
2 avril 2003 à 02:11
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+
0
superpa Messages postés 113 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 5 janvier 2004
2 avril 2003 à 12:42
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)
0
Rejoignez-nous