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 :

Problème valeur tableau


Sujet :

C

  1. #1
    Membre à l'essai
    Inscrit en
    Septembre 2008
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Septembre 2008
    Messages : 17
    Points : 14
    Points
    14
    Par défaut Problème valeur tableau
    Voila mon problème, je vous laisse juger par vous même de la situation..
    (voir image).

    Avec ce code, la première et la deuxième variable du tableau valent zéro.

    En typant la variable "i" en int, sa marche (les deux premières valeurs du tableau sont correctement affichées).. mais je ne vois absolument pas pourquoi un char n'irait pas (les valeurs que je lui attribue sont nettement inférieure à 2^8).

    C'est comme si la variable "i" écrasait les valeurs suivantes (début du tableau), et ce, sans aucune raisons.

    Quelqu'un aurait une explication?
    Images attachées Images attachées  

  2. #2
    Invité(e)
    Invité(e)
    Par défaut
    Citation Envoyé par sepnar Voir le message
    En typant la variable "i" en int, sa marche (les deux premières valeurs du tableau sont correctement affichées).. mais je ne vois absolument pas pourquoi un char n'irait pas (les valeurs que je lui attribue sont nettement inférieure à 2^8)
    Bonjour,

    Tu dis à scanf de d'écrire un int (%d) pour lui, int c'est 4 octets.
    Si tu lui donne un char pour stocker le résultat (1 seul octet), il va pourrir les trois octets qui se trouvent derrière.

    scanf n'est pas capable de se dire "l'entier entré tiens sur n octets, je ne vais utiliser que n octets."

  3. #3
    Membre éclairé
    Avatar de Pouet_forever
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    671
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 671
    Points : 842
    Points
    842
    Par défaut
    Tu peux toujours utiliser le formateur %hhd :

    Plus tu pédales moins fort, moins t'avances plus vite.

  4. #4
    Membre à l'essai
    Inscrit en
    Septembre 2008
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Septembre 2008
    Messages : 17
    Points : 14
    Points
    14
    Par défaut
    Ok, merci pour les réponses. Le problème vient donc du scanf qui attribue 4 octet..

    D'ou la prochaine question, comment faire pour réaliser un scanf sur 1 seul octet? Je n'ai pas trouvé de réponses satisfaisantes dans mes cours (élémentaires) de C. Et, Pouet_forever, le formateur que tu m'a conseillé ne marche pas


    EDIT: en fait le formateur est %hdd. Mais si quelqu'un a un cours sur les formateurs, je suis preneur.

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2010
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 11
    Points : 19
    Points
    19
    Par défaut
    Salut,

    les modificateurs sont les memes que pour la famille de fonctions printf.

    Apres un % tu peux placer (entre autres) des modificateurs de taille qui sont h ou l.
    Si le type que tu attends est sur 4 octets ex: %d, en placant un h devant tu attends 2 octets donc un short et si tu en rajoutes un deuxieme tu attends un seul octet.

    Tu peux retrouver toutes les subtilites de ces fonctions ds les pages man.

  6. #6
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 369
    Points : 41 519
    Points
    41 519
    Par défaut
    Attention, scanf("%hhd") est C99 et ne marche pas sous Visual Studio.
    Je recommande scanf("%d") dans un int temporaire, puis copie dans la case voulue du tableau.
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

Discussions similaires

  1. [XHTML] problème de tableau
    Par virgul dans le forum Balisage (X)HTML et validation W3C
    Réponses: 5
    Dernier message: 28/04/2005, 07h18
  2. Problème de tableau
    Par tom06440 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 3
    Dernier message: 26/04/2005, 20h30
  3. [html][xsl]Problème valeur attribut html
    Par beho dans le forum XSL/XSLT/XPATH
    Réponses: 3
    Dernier message: 16/04/2005, 13h37
  4. Problème de tableau
    Par krfa1 dans le forum Mise en page CSS
    Réponses: 2
    Dernier message: 08/02/2005, 11h09

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