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

Messages postés
22
Date d'inscription
mardi 9 mai 2006
Statut
Membre
Dernière intervention
16 novembre 2008
- - Dernière réponse : zozizozu
Messages postés
22
Date d'inscription
mardi 9 mai 2006
Statut
Membre
Dernière intervention
16 novembre 2008
- 15 oct. 2008 à 19:19
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
Afficher la suite 

Votre réponse

6 réponses

Meilleure réponse
Messages postés
3213
Date d'inscription
lundi 7 novembre 2005
Statut
Membre
Dernière intervention
16 février 2009
10
3
Merci
 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++ (@++)<!--

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 158 internautes nous ont dit merci ce mois-ci

Commenter la réponse de SAKingdom
Messages postés
22
Date d'inscription
mardi 9 mai 2006
Statut
Membre
Dernière intervention
16 novembre 2008
0
Merci
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
Commenter la réponse de zozizozu
Messages postés
3213
Date d'inscription
lundi 7 novembre 2005
Statut
Membre
Dernière intervention
16 février 2009
10
0
Merci
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++ (@++)<!--
Commenter la réponse de SAKingdom
Messages postés
22
Date d'inscription
mardi 9 mai 2006
Statut
Membre
Dernière intervention
16 novembre 2008
0
Merci
Un tableau est une adresse mémoire , je pense que je comprend un peu mieux maintenant ...

Merci de tes eclaircissement

Cordialement
3o3i
Commenter la réponse de zozizozu
Messages postés
3213
Date d'inscription
lundi 7 novembre 2005
Statut
Membre
Dernière intervention
16 février 2009
10
0
Merci
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++ (@++)<!--
Commenter la réponse de SAKingdom
Messages postés
22
Date d'inscription
mardi 9 mai 2006
Statut
Membre
Dernière intervention
16 novembre 2008
0
Merci
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
Commenter la réponse de zozizozu