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

Messages postés
22
Date d'inscription
mardi 9 mai 2006
Dernière intervention
16 novembre 2008
- - Dernière réponse : zozizozu
Messages postés
22
Date d'inscription
mardi 9 mai 2006
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
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 121 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
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
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
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
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
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

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.