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 :

u_char en char


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de transistor49
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2005
    Messages
    184
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 184
    Par défaut u_char en char
    Excuser moi, de vous poser cette question toute bête, mais je n'arrive pas a trouver a cette question:
    Savez vous comment on converti une donné u_char en une donné char
    merci!

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    132
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 132
    Par défaut hum
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    char a;
    u_char b;
     
    a = (char) b;
    Ca passe pas ca ?
    Y'a peut etre mieux mais pour ma part, j'aurais simplement fait ce petit cast (en meme temps j'ai pas testé ... mais je vois pas trop pk ca ne passerait pas)

  3. #3
    Membre confirmé Avatar de transistor49
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2005
    Messages
    184
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 184
    Par défaut
    excuse moi, g mal posée le probleme:
    j'ai une valeur:

    et j'aimerais la mettre sous la forme:

    et j'ai beaucoup de mal

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    132
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 132
    Par défaut
    strcpy(a, b) ?

  5. #5
    Membre confirmé Avatar de transistor49
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2005
    Messages
    184
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 184
    Par défaut
    ta solution d'avant était mieux, elle générait moin d'erreur, de plus il me semble que strcpy n'utilise pas les u_char!

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    132
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 132
    Par défaut
    Apres réflexion, sprintf doit pouvoir t'aider a merveille

    sprintf(a, "%s", b); devrait passer

  7. #7
    Membre confirmé Avatar de transistor49
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2005
    Messages
    184
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 184
    Par défaut
    Sa ne le prend toujours pas car, ma variables paquet est une constante et sprintf ne le prend pas!

  8. #8
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    132
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 132
    Par défaut
    bah j'avoue pas connaitre la fonction qu'il te manque.

    Au pire, tu dois pouvoir faire, en partant de ma 1ere solution :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    int i = 0;
    a = new char[strlen(b)];
    for(i = 0; i < strlen(b); i++)
       a[i] = (char) b[i];
    Mais c'est quand meme très laid ...

  9. #9
    Membre confirmé Avatar de transistor49
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2005
    Messages
    184
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 184
    Par défaut
    sa ne marche pas top non plus!

  10. #10
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Par défaut
    Le dernier code de Worldofdada me paraît la bonne solution (au +1 près pour la longueur et le \0), sauf que c'est exactement ce que std::copy fait.

    Au fait, pourquoi dois-tu jongler entre les unsigned char* et les char* ?

  11. #11
    Membre confirmé Avatar de transistor49
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2005
    Messages
    184
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 184
    Par défaut
    la variable u_char est utiliser par deux méthode et la méthode suivante ne marche qu'avec des char, donc pour cela je doit effectuer une conversion tout en faisant attention de ne pas perturber les autres classes. quand j'utilise strcpy, il me créé des erreurs dans une classe précédente, je ne te dit pas la prise de tête!
    Si je réussie a régler se probleme, cela me débloque dans bien des endroits!!!

  12. #12
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    #include <algorithm>
     
    u_char* Truc = ... tes données ...
    int Taille = ... taille de Truc ...
     
    char* Machin = new char[Taille];
    std::copy(Truc, Truc + Taille, Machin);

  13. #13
    Membre confirmé Avatar de transistor49
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2005
    Messages
    184
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 184
    Par défaut
    hola!!! sa ne doit pas etre sa, sa m'affiche une cinquantaine d'erreure!!!
    a croire qu'il n'existe rien pour ma conversion!!!!

  14. #14
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Par défaut
    Si tu nous montrais plutôt ces 50 erreurs ?

  15. #15
    Membre confirmé Avatar de transistor49
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2005
    Messages
    184
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 184
    Par défaut
    J'avoue que 50 c'est exagéré mais y'en a quelques une. voici une partie de mon code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    void AnalyseurTraficEthernet::wrapperCallback(u_char *user,const struct pcap_pkthdr *hdr,const u_char *packet)
     {
    	 user=NULL;
    	 hdr=NULL;
    	 AnalyseurTraficEthernet * objAnalyseurTraficEthernet = (AnalyseurTraficEthernet*) ptObjetAnalyseurTraficEthernet;
    	const char * paquet= new char[200];
    	std::copy(packet, packet + 200, paquet);
    	objAnalyseurTraficEthernet->callback(paquet);
    }
    {invalid conversion from `const char*' to `char*'
    initializing argument 1 of `void AnalyseurTraficEthernet::callback(char*)
    }
    ->se trouvant sur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    	objAnalyseurTraficEthernet->callback(paquet);
    {instantatied from `_Outputlter std::__copy_aux2(_inputlter,_inputlter,_Oooutputlter,__true_type) [with_Inputlter = cnst u_char*,_Ooutputlter = cnst char*]'
    instantatied from `_Outputlter std::__copy_ni2(_inputlter,_inputlter,_Oooutputlter,__true_type) [with_Inputlter = cnst u_char*,_Ooutputlter = cnst char*]'
    instantatied from `_Outputlter std::__copy_ni1(_inputlter,_inputlter,_Oooutputlter,__true_type) [with_Inputlter = cnst u_char*,_Ooutputlter = cnst char*]'
    instantatied from `_Outputlter std::__copy(_inputlter,_inputlter,_Oooutputlter,__true_type) [with_Inputlter = cnst u_char*,_Ooutputlter = cnst char*]'
    }
    ->se trouvant dans le stl_algobase.h

    instanted from here

    -> se trouvant sur:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    std::copy(packet, packet + 200, paquet);
    assignement of read-only
    ->se trouvant dans le stl_algobase.h

  16. #16
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Par défaut
    Bon en fait tu n'as qu'une erreur (les fonctions standard à base de templates portent souvent à confusion, quand ils provoquent des erreurs).

    Forcément, si tu veux modifier une chaîne constante, le compilo va râler. Utilise un char* non-const, ce n'est pas parce que ta fonction prend un const char* que tu ne peux pas lui fournir un char*. Cela indique juste que cette fonction ne modifiera pas son paramètre.

  17. #17
    Membre confirmé Avatar de transistor49
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2005
    Messages
    184
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 184
    Par défaut
    Je te remercie, tout de suite le logiciel m'agresse moins les yeux avec moins de rouge mais le il me met des erreur dans des fonctions qui marchait tres bien avant, meme dans une appelle de fonction!

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
        AnalyseurTraficEthernet * objAnalyseurTraficEthernet = (AnalyseurTraficEthernet*) ptObjetAnalyseurTraficEthernet;
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    undefined reference to {ptObetAnalyseurTraficEthernet'

    et il me l'affiche deux fois!

  18. #18
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Par défaut
    ptObjetAnalyseurTraficEthernet est défini où ?

    C'est une erreur de frappe dans ton post ou dans ton code, le fait qu'il lui manque un 'j' dans le message d'erreur ?

  19. #19
    Membre confirmé Avatar de transistor49
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2005
    Messages
    184
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 184
    Par défaut
    je l'ai définit dans le .h

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    	extern void* ptObjetAnalyseurTraficEthernet;
    pour le j c'est une erreur de frappe!

    sinon j'ai essayer une autre façon mais san grand résultat
    avec reinterpret_cast. moin de probleme mais sa ne veut pas convertir!

  20. #20
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Par défaut
    Il faut définir ta variable dans une unité de traduction (fichier .cpp), en + de la déclaration dans l'en-tête avec extern.

    http://c.developpez.com/faq/c/?page=...TYPES_globales

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Cast u_char / char* en C
    Par Zaraki21 dans le forum C
    Réponses: 2
    Dernier message: 21/01/2011, 10h35
  2. Réponses: 3
    Dernier message: 02/07/2003, 16h24
  3. [PostgreSql] Problème de cadreage de char !!!
    Par moipastoi dans le forum Requêtes
    Réponses: 3
    Dernier message: 08/05/2003, 18h01
  4. Réponses: 6
    Dernier message: 24/03/2003, 17h11
  5. Traitement d'un char* renvoyé par une DLL en C++
    Par LuluTchab dans le forum Langage
    Réponses: 4
    Dernier message: 22/03/2003, 21h48

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