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 :

erreur d'initialisation buffer


Sujet :

C++

  1. #1
    Membre éclairé Avatar de ac/dc
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2006
    Messages
    369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2006
    Messages : 369
    Par défaut erreur d'initialisation buffer
    bonjour, j'ai une fonction afficher() dans ma classe date : le pb est que le tableau 'jour' à l'affichage, n'affiche rien et le tableau 'mois' fonctionne correctement, et là jcomprends plus pourquoi ça marche pas, parceque j'applique le meme traitement aux 2 .... merci !!

    .h:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    unsigned int jour;
    unsigned int mois;
    unsigned int annee;
    .cpp:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    char jour[2], mois[2];
     
    (this->jour < 10) ? sprintf(jour, "0%u", this->jour) : sprintf(jour, "%u", this->jour);	
    (this->mois < 10) ? sprintf(mois, "0%u", this->mois) : sprintf(mois, "%u", this->mois);
     
    printf("%s/%s/%d\n", jour, mois, annee);

  2. #2
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    577
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 577
    Par défaut
    salut,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sprintf(jour, "0%u", this->jour)
    va écrire combien de caractères dans jour ?
    réponse : 3 ou 4.
    0 = 1 caractère
    %u = 1 ou 2 caractères
    ..et le '\0' de fin de chaine
    Or tu ne laisse la plase que de 2 caractères dans tes buffer. Donc, il écrit le reste "un peu à côté".

    déclare char jour[4], char mois[4], et tu n'auras plus ce problème.

  3. #3
    Expert confirmé
    Avatar de Luc Hermitte
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2003
    Messages
    5 292
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Août 2003
    Messages : 5 292
    Par défaut
    strftime, c'est bien aussi.
    Blog|FAQ C++|FAQ fclc++|FAQ Comeau|FAQ C++lite|FAQ BS|Bons livres sur le C++
    Les MP ne sont pas une hotline. Je ne réponds à aucune question technique par le biais de ce média. Et de toutes façons, ma BAL sur dvpz est pleine...

  4. #4
    Membre éclairé Avatar de adil_suptem
    Inscrit en
    Décembre 2006
    Messages
    52
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 52
    Par défaut
    sprintf si pour afficher une chaine de caractère pas pour des numerique

  5. #5
    Membre éclairé Avatar de ac/dc
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2006
    Messages
    369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2006
    Messages : 369
    Par défaut
    ah oui en effet ça fonctionne comme cela, alors cela viens du fait qu'un entier fasse 32bits et un char 8 bits ?

  6. #6
    Expert confirmé
    Avatar de Luc Hermitte
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2003
    Messages
    5 292
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Août 2003
    Messages : 5 292
    Par défaut
    Non, aucun rapport. Cela vient que les chaines "01" ou "42" occupent 3 octets en mémoire. Et non pas 2.
    Blog|FAQ C++|FAQ fclc++|FAQ Comeau|FAQ C++lite|FAQ BS|Bons livres sur le C++
    Les MP ne sont pas une hotline. Je ne réponds à aucune question technique par le biais de ce média. Et de toutes façons, ma BAL sur dvpz est pleine...

  7. #7
    Membre éclairé Avatar de ac/dc
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2006
    Messages
    369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2006
    Messages : 369
    Par défaut
    ah ok, j'ai simplement oublié de compter le terminateur alors ....

  8. #8
    Expert confirmé

    Inscrit en
    Août 2006
    Messages
    3 965
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 3 965
    Par défaut
    Moe,
    Citation Envoyé par ac/dc
    .h:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    unsigned int jour;
    unsigned int mois;
    unsigned int annee;
    Ce n'est pas la place des déclarations de variables.

  9. #9
    Membre éclairé Avatar de ac/dc
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2006
    Messages
    369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2006
    Messages : 369
    Par défaut
    bon alors je reviens dessus quand meme car j'ai compris pourquoi cela ne fonctionnait pas, mais j'aurais sûrement trouvé si les 2 n'aurais pas fonctionné ! Or, là, pour le mois ça fonctionnait, alors pourquoi ?

  10. #10
    Expert confirmé
    Avatar de Luc Hermitte
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2003
    Messages
    5 292
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Août 2003
    Messages : 5 292
    Par défaut
    Les erreurs de programmations liés à une corruption de la mémoire ne produisent pas toujours des résultats entièrement déterministes (de notre point de vu).
    Blog|FAQ C++|FAQ fclc++|FAQ Comeau|FAQ C++lite|FAQ BS|Bons livres sur le C++
    Les MP ne sont pas une hotline. Je ne réponds à aucune question technique par le biais de ce média. Et de toutes façons, ma BAL sur dvpz est pleine...

  11. #11
    Membre éclairé Avatar de ac/dc
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2006
    Messages
    369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2006
    Messages : 369
    Par défaut
    ok merci de ta réponse !

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

Discussions similaires

  1. Erreur d'initialisation de requête - option RTF
    Par verticka dans le forum WinDev
    Réponses: 2
    Dernier message: 25/11/2005, 09h55
  2. [BDE Errors] Erreur d'initialisation
    Par SubZero2 dans le forum Bases de données
    Réponses: 2
    Dernier message: 13/07/2005, 08h46
  3. Erreur d'initialisation du BDE sous Delphi7 ent et WinXP
    Par touhami dans le forum Bases de données
    Réponses: 1
    Dernier message: 15/02/2005, 01h51
  4. Erreur ORU-10027 : buffer overflow
    Par valerie90 dans le forum Oracle
    Réponses: 3
    Dernier message: 14/02/2005, 08h40
  5. [Tomcat MySQL] Erreur d'initialisation d'un pool
    Par mmed dans le forum Eclipse Java
    Réponses: 2
    Dernier message: 05/01/2005, 09h22

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