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 :

sscanf avec unsigned char


Sujet :

C++

  1. #1
    Membre confirmé
    Homme Profil pro
    Analyse système
    Inscrit en
    Mai 2013
    Messages
    190
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Analyse système
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2013
    Messages : 190
    Par défaut sscanf avec unsigned char
    Bonjour tout le monde,

    j'ai un petit soucis avec ce code qui fait bien ce que je veux mais qui me sort par la suite un stack around avec la variable aby_start_stop :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    unsigned char *pby_param_value;
    unsigned char aby_start_stop;
    sscanf((const char*)pby_param_value, "%d", &aby_start_stop);http://www.developpez.net/forums/attachments/p229228d1482134960/c-cpp/cpp/sscanf-unsigned-char/titre2.png/
    Nom : Sans titre.png
Affichages : 384
Taille : 4,2 KoNom : Sans titre2.png
Affichages : 336
Taille : 9,9 Ko

    J'ai bien mon aby_start_stop égale à 125, sauf que un stack around gâche le paysage, je pense sûrement que le typage n'est pas le bon, à votre avis ?

    Merci !

  2. #2
    Membre chevronné
    Homme Profil pro
    Cadre informatique
    Inscrit en
    Avril 2013
    Messages
    183
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Cadre informatique

    Informations forums :
    Inscription : Avril 2013
    Messages : 183
    Par défaut
    Salut!

    Le sscanf utilise un format (tu choisis un %d adapte pour des int) pour recuperer les donnees contenues dans pby_param_value. Si tes donnees varient d un champ a l autre, tu peux avoir des soucis.

    A tout hasard et qu il s agisse bien d un unsigned char que tu veuilles recuperer, essayes avec un %hhu (plus approprie pour unsigned char) plutot qu un %d.
    J espere que cela puisse etre aussi simple

    Cordialement

  3. #3
    Membre confirmé
    Homme Profil pro
    Analyse système
    Inscrit en
    Mai 2013
    Messages
    190
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Analyse système
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2013
    Messages : 190
    Par défaut
    Salut Bysbobo,

    merci pour vos renseignements, alors j'ai toujours une erreur même si je met %hhu, mais je vois bien que ce n'est pas bon à la base ce que je fais, sauf que j'ai aucune idée de comment bien récupérer la valeur de pby_param_value dans mon aby_start_stop :s

  4. #4
    Membre chevronné
    Homme Profil pro
    Cadre informatique
    Inscrit en
    Avril 2013
    Messages
    183
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Cadre informatique

    Informations forums :
    Inscription : Avril 2013
    Messages : 183
    Par défaut
    Que contient ton pby_param_value en general?
    Avec quoi est-il rempli?

    Parce que pour moi, tu as tire les 3 lignes de ton code et on ne peut pas savoir quelle est la composition de ton pby_param_value.
    Sinon, voir pour une autre facon de recuperer les infos que tu cherches

  5. #5
    Rédacteur/Modérateur


    Homme Profil pro
    Network game programmer
    Inscrit en
    Juin 2010
    Messages
    7 147
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Canada

    Informations professionnelles :
    Activité : Network game programmer

    Informations forums :
    Inscription : Juin 2010
    Messages : 7 147
    Billets dans le blog
    4
    Par défaut
    sscanf c'est un peu bourrin, et tu utilises un cast vraiment moche pour lui faire accepter ton argument
    Si pby_param_value n'est pas une null-terminated string correcte, à tous les coups il continue de lire ce qu'il trouve derrière pour y trouver assez de données pour un int (%d), tu tu lui fournis un unsigned char. La corruption de stack est un moindre maux face à un code des plus douteux.
    Pensez à consulter la FAQ ou les cours et tutoriels de la section C++.
    Un peu de programmation réseau ?
    Aucune aide via MP ne sera dispensée. Merci d'utiliser les forums prévus à cet effet.

  6. #6
    Membre confirmé
    Homme Profil pro
    Analyse système
    Inscrit en
    Mai 2013
    Messages
    190
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Analyse système
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2013
    Messages : 190
    Par défaut
    Oui je pense que je vais me débrouiller autrement, merci pour vos conseils en tout cas !

Discussions similaires

  1. Remplir un safearray avec unsigned char
    Par pokie dans le forum C++
    Réponses: 6
    Dernier message: 02/12/2013, 17h03
  2. Réponses: 7
    Dernier message: 28/03/2006, 23h09
  3. Décalage de bit sur unsigned char [8]
    Par dboulange dans le forum C++
    Réponses: 14
    Dernier message: 26/07/2005, 14h10
  4. Réponses: 19
    Dernier message: 28/04/2005, 15h36
  5. char et unsigned char
    Par jobherzt dans le forum C++
    Réponses: 8
    Dernier message: 11/02/2005, 00h24

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