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 :

Cast u_char / char* en C


Sujet :

C

  1. #1
    Nouveau membre du Club
    Inscrit en
    Janvier 2010
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Janvier 2010
    Messages : 5
    Par défaut Cast u_char / char* en C
    Bonjour,

    je travaille actuellement sur une application en langage C utilisant une libraire spécifique et développée pour une cible bien précise.
    Je suis confronté actuellement à un problème de cast sur l'utilisation d'un tableau de u_char. En effet j'aurai besoin de récupérer le contenu de ce tableau dans un "char*" mais aucune solution de cast basique n'a fonctionné.
    J'ai pensé également à une autre possibilité en passant par une fonction proposée par la librairie fournie qui envoie un élément u_char (passé en paramètre) dans stdout. J'ai pensé rediriger le contenu de stdout dans un char* notamment en passant par des "pipes" ; à noter que je travaille pour un environnement Windows XP Embedded.

    Merci d'avance pour vos réponses ou suggestions.

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 23
    Par défaut
    Salut,

    u_char n'est pas un type standard, mais je suppose qu'il s'agit en fait d'un unsigned char, il doit y avoir quelque part dans la librairie que tu uilise un typedef unsigned char u_char ... Si ce n'est pas le cas, affiche la taille du type "u_char" à l'aide d'un printf("%d", sizeof(u_char)). Il faut vérifier que c'est bien la même taille que le type standard unsigned char...
    Admettons que sizeof(u_char) == sizeof(unsigned char).

    Tu as donc quelque chose comme ca :
    u_char a[10];

    et tu veux le mettre dans un char *...

    as tu essayé :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    u_char a[10];
    unsigned char *b = (unsigned char*)(a);
    C'est le cast de base... Tu dis que tu as essayé tous les casts de basent et qu'ils ne marchent pas, il serait bien que tu nous montre les casts que tu as essayé et qui ne marchent pas...
    Si non tu peux essayer :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    u_char a[10]
    unsigned char b[10]
    for(int i =0;i<10;i++)
    {
       b[i] = (unsigned char)(a[10])
    }
    Montre nous ce que tu as essayé, même si ça n'a pas marché...

    A+

    ----------------------------
    Adrien BARRAL
    REETI's development team
    http://www.reeti.fr

  3. #3
    Expert confirmé
    Avatar de diogene
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Juin 2005
    Messages
    5 761
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 761
    Par défaut
    as tu essayé :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    u_char a[10];
    unsigned char *b = (unsigned char*)(a);
    Ne fera que copier dans b l'adresse de départ du tableau a. Le cast ne sert à rien si u_char est un typedef d'un unsigned char.

    Si non tu peux essayer :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    u_char a[10]
    unsigned char b[10]
    for(int i =0;i<10;i++)
    {
       b[i] = (unsigned char)(a[10])
    }
    Ceci est illégal : a[10] est hors du tableau a (et ne répond pas à la question : b n'est pas ici un char*)

    Je crois qu'il serait bon que le PO précise ce qu'il veut faire, car copier un tableau dans un char * est un truc complètement anormal et il est vraisemblable que le problème soit mal exposé.

Discussions similaires

  1. cast de char * en une class
    Par LastSpear dans le forum Débuter
    Réponses: 11
    Dernier message: 30/08/2009, 21h43
  2. Réponses: 16
    Dernier message: 12/11/2008, 20h36
  3. cast (void*) -> (char)
    Par nicodn02 dans le forum C
    Réponses: 10
    Dernier message: 14/04/2008, 10h02
  4. Réponses: 3
    Dernier message: 16/08/2007, 11h05
  5. Cast de char vers int
    Par Bernardtapis dans le forum C
    Réponses: 15
    Dernier message: 28/07/2006, 16h58

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