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

zozizozu 22 Messages postés mardi 9 mai 2006Date d'inscription 16 novembre 2008 Dernière intervention - 13 oct. 2008 à 18:20 - Dernière réponse : zozizozu 22 Messages postés mardi 9 mai 2006Date d'inscription 16 novembre 2008 Dernière intervention
- 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
SAKingdom 3213 Messages postés lundi 7 novembre 2005Date d'inscription 16 février 2009 Dernière intervention - 13 oct. 2008 à 19:21
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++ (@++)<!--

Merci SAKingdom 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 124 internautes ce mois-ci

Commenter la réponse de SAKingdom
zozizozu 22 Messages postés mardi 9 mai 2006Date d'inscription 16 novembre 2008 Dernière intervention - 13 oct. 2008 à 20:22
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
SAKingdom 3213 Messages postés lundi 7 novembre 2005Date d'inscription 16 février 2009 Dernière intervention - 14 oct. 2008 à 04:19
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
zozizozu 22 Messages postés mardi 9 mai 2006Date d'inscription 16 novembre 2008 Dernière intervention - 14 oct. 2008 à 09:35
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
SAKingdom 3213 Messages postés lundi 7 novembre 2005Date d'inscription 16 février 2009 Dernière intervention - 14 oct. 2008 à 15:44
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
zozizozu 22 Messages postés mardi 9 mai 2006Date d'inscription 16 novembre 2008 Dernière intervention - 15 oct. 2008 à 19:19
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.