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 :

Un peu dans le même genre, unsigned char* to char* foireux.


Sujet :

C

  1. #1
    Membre habitué 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
    Points : 133
    Points
    133
    Par défaut Un peu dans le même genre, unsigned char* to char* foireux.
    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
    Expert éminent sénior

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 603
    Détails du profil
    Informations personnelles :
    Âge : 66
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 603
    Points : 17 913
    Points
    17 913
    Billets dans le blog
    2
    Par défaut
    que c'est compliqué..

    • D'une part es-tu sûr que ton GetResult n'alloue pas directement la chaîne ?
    • D'autre part, pourquoi utilises-tu t1 comme taille après ta première boucle ?
    • Aussi pourquoi as-tu besoin de char ?
    • Pourquoi recopies-tu ta chaîne strResultString dans m_ResultString ?
    • Enfin, il n'ajoute pas de caractères spéciaux, il écrase ta chaîne complètement...
    "Un homme sage ne croit que la moitié de ce qu’il lit. Plus sage encore, il sait laquelle".

    Consultant indépendant.
    Architecture systèmes complexes. Programmation grosses applications critiques. Ergonomie.
    C, Fortran, XWindow/Motif, Java

    Je ne réponds pas aux MP techniques

  3. #3
    Membre habitué 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
    Points : 133
    Points
    133
    Par défaut
    La réponse à été donnée dans l'autre topic, je n'avais juste pas alloué l'espace pour le '\0' en fin de chaine.

    Quant aux points que tu as énoncés, c'est juste que j'ai tenté un peu tout ce que je pouvais

    Bonne soirée à tous !

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

Discussions similaires

  1. select dans le même genre que LIMIT
    Par HwRZxLc4 dans le forum Requêtes
    Réponses: 2
    Dernier message: 20/09/2008, 14h25
  2. [Applet]Utiliser plusieurs Applet dans une même classe
    Par BRAUKRIS dans le forum Applets
    Réponses: 5
    Dernier message: 11/06/2004, 15h27
  3. Réponses: 3
    Dernier message: 15/04/2004, 08h44
  4. Résultats dans une même colonne.
    Par souellet dans le forum Langage SQL
    Réponses: 6
    Dernier message: 10/03/2004, 19h51
  5. je m'y perd un peu dans tous ces plugin
    Par Stessy dans le forum Eclipse Java
    Réponses: 7
    Dernier message: 30/09/2003, 23h33

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