Probleme de convertion de int vers char * [Résolu]

Signaler
Messages postés
22
Date d'inscription
mardi 9 mai 2006
Statut
Membre
Dernière intervention
16 novembre 2008
-
Messages postés
22
Date d'inscription
mardi 9 mai 2006
Statut
Membre
Dernière intervention
16 novembre 2008
-
Bonjour a tous.
J'ai un probleme de convertion de int vers char *
voici mon code :

    for( int  i = 0; i < mChannelCount; i++ )
    {
        char intochar;
        _itoa_s(i,&intochar,40,10); //10 return dec, 16  return hexa ...
        //sprintf(&intochar, "%d", i );

        FBString tmpChnlName( "Chnl_",&intochar );
        mChannelName[i] = tmpChnlName;
    }

Avec sprintf comme avec _itoa_s , mon mChannelName[i] ressemble à Chnl_1_petit carré_ , Chnl_2_petit carré_ ...

FBString est declaré comme suit : FBString(const char* p1Str,const char* p2Str);

Merci d'avance

3o3i

6 réponses

Messages postés
3212
Date d'inscription
lundi 7 novembre 2005
Statut
Membre
Dernière intervention
16 février 2009
15
 Un caractère ne peut stocker... qu'un seul caractère.
Dans 40, il y a '4' et '0'... 2 caractères

   for( int  i = 0; i < mChannelCount; i++ )
    {
        char intochar[16]; // On devrait pas en manquer avec 16 char
        _itoa_s(i,intochar,40,10); //10 return dec, 16  return hexa ...
        //sprintf(intochar, "%d", i );

        FBString tmpChnlName( "Chnl_",intochar );
        mChannelName[i] = tmpChnlName;
    }

C++ (@++)<!--
Messages postés
22
Date d'inscription
mardi 9 mai 2006
Statut
Membre
Dernière intervention
16 novembre 2008

Genial, exelent, merci beaucoup !!!
Cependant, je ne comprend pas pourquoi le char intochar[16] est accepté par FBString , qui demande un char*  ???

Tu aurras deviné que je suis un super-débutant , et que j'ai attaqué le cpp de front, sans vraiment en comprendre certain concept.

Merci encor

3o3i
Messages postés
3212
Date d'inscription
lundi 7 novembre 2005
Statut
Membre
Dernière intervention
16 février 2009
15
Le constructeur de la classe FBString demande une adresse mémoire. Cette adresse mémoire sera stockée dans son paramètre char *.
Ce paramètre est donc ici un pointeur et comme son nom l'indique, il sert à pointer à un emplacement en mémoire.

Un tableau est une adresse mémoire. C'est donc valide.

C++ (@++)<!--
Messages postés
22
Date d'inscription
mardi 9 mai 2006
Statut
Membre
Dernière intervention
16 novembre 2008

Un tableau est une adresse mémoire , je pense que je comprend un peu mieux maintenant ...

Merci de tes eclaircissement

Cordialement
3o3i
Messages postés
3212
Date d'inscription
lundi 7 novembre 2005
Statut
Membre
Dernière intervention
16 février 2009
15
Ben, pour être plus précis, un tableau est une plage mémoire. Passer son nom comme paramètre ou peu-importe revient à donnée l'adresse de la première case du tableau.

Faire:
char *p = tableau;

revient donc à faire:

char *p = &tableau[0];

C++ (@++)<!--
Messages postés
22
Date d'inscription
mardi 9 mai 2006
Statut
Membre
Dernière intervention
16 novembre 2008

Bon, bien, je vais méditer la dessus ...
J'ai comme l'impression que tu viens de me donner une clef pour comprendre le c++, et je t'en remercie .
Deja, je comprend mon erreur, et plein d'autre truc en +(+) ...
Merci encor

3o3i