IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C Discussion :

Conversion unsigned char* (tableau) en char* (string)


Sujet :

C

  1. #1
    Membre confirmé Avatar de skip78
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    247
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 247
    Par défaut Conversion unsigned char* (tableau) en char* (string)
    Salut à tous !

    J'ai un peu honte de poster ce genre de problèmes, mais bon ca fait plusieurs fois que je planche la dessus en vain, donc bon

    Le problème est donc le suivant :

    Je récupère une chaîne de caractère sous la forme d'un unsigned char* grace à l'appel d'une fonction (externe, donc non, je ne peux pas passer en char*)

    Quand j'affiche les caracteres de la chaine un par un, pas de soucis, ca s'affiche, mais quand je tente de les mettre dans mon char*, il rajoute des caractères speciaux à la fin :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
     
    // strSize = 24 (trouvé dynamiquement)
     
    resultUC = (unsigned char *)calloc(strSize, sizeof(unsigned char));
     
    GetResultUC(resultUC);
     
    strResultString = (char*)malloc(strSize * sizeof(char));
    for (t1 = 0; t1 < strSize; t1++)
    {
        printf("uchar = %c\n", *(resultUC + t1));
        // => Affiche "M" puis "o" puis "n" etc. jusque "e"
        strResultString[t1] = (*(resultUC + t1));
    }
     
    m_ResultString = (char*)malloc(t1 * sizeof(char));
     
    for(i=0 ; i<t1 ; i++)m_ResultString[i] = (int)NULL;
    for(i=0 ; i<t1 ; i++)m_ResultString[i] =  strResultString[i];
     
    (...)
     
    printf("result = %s\n", mResultString);
    // => Affiche "Mon_texte/)&à('$*¤!§"
    Merci de vos éventuelles réponses !

  2. #2
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    57
    Détails du profil
    Informations personnelles :
    Âge : 17
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 57
    Par défaut
    Je pense que tu as oublié d'allouer l'espace nécessaire pour rajouter un '\0' de terminaison.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    m_ResultString = (char*)calloc(t1 * sizeof(char) + 1); //+1 pour rajouter le caractère nul
     
    for(i=0 ; i<t1 ; i++)m_ResultString[i] =  strResultString[i];

  3. #3
    Membre confirmé Avatar de skip78
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    247
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 247
    Par défaut
    En effet !
    Comme prévu c'était facile ^^

    Merci beaucoup en tout cas

    Bon week end !!!

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. tableau de char vers string hexa
    Par andromeda dans le forum Entrée/Sortie
    Réponses: 4
    Dernier message: 22/07/2007, 23h10
  2. Réponses: 1
    Dernier message: 15/02/2007, 17h32
  3. pb conversion unsigned char vers char *
    Par FamiDoo dans le forum C
    Réponses: 11
    Dernier message: 24/08/2006, 18h11
  4. [Debutant]String en tableau de char
    Par amel2006 dans le forum Collection et Stream
    Réponses: 6
    Dernier message: 05/03/2006, 10h33
  5. [débutant]obtenir un unsigned char en tant que String
    Par NorthernLights dans le forum C++
    Réponses: 2
    Dernier message: 03/02/2006, 10h30

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo