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 :

Probleme d'utilisation de Sprintf


Sujet :

C

  1. #1
    Membre averti
    Inscrit en
    Février 2010
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Février 2010
    Messages : 17
    Par défaut Probleme d'utilisation de Sprintf
    salut,

    J'ai besoin de concatiner un entier dans une chaine de caractères , j'utilise sprintf ; mais il ya un probleme de signe ou de debordement de l'entier.

    sprintf(connect_cmd,"FE_CONNECT 1 1 %d 8",my_int);

    pour my_int = 850000
    elle me rend : FE_CONNECT 1 1 -2133237467 8

    Je comprend pas alors pourquoi de 850000 --> -2133237467 ??

    Merci pour votre aide.

  2. #2
    Expert confirmé
    Avatar de Melem
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2006
    Messages
    3 656
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 3 656
    Par défaut
    Qu'affiche le programme suivant chez toi ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    #include <stdio.h>
    #include <limits.h>
     
    int main()
    {
        char connect_cmd[256];
        int my_int = 850000;
     
        printf("sizeof(int) = %d\n", (int)sizeof(int));
        printf("CHAR_BIT = %d\n", CHAR_BIT);
     
        sprintf(connect_cmd, "FE_CONNECT 1 1 %d 8", my_int);
        printf("%s\n", connect_cmd);
     
        return 0;
    }

  3. #3
    Membre du Club
    Femme Profil pro
    Ingénieur intégration
    Inscrit en
    Juillet 2011
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur intégration

    Informations forums :
    Inscription : Juillet 2011
    Messages : 7
    Par défaut
    Bonjour,

    Je suis peut-être à côté de la plaque, mais un "int" peut atteindre la valeur 850000 ??

    Il faudrait un long, non ? voire un double ?

  4. #4
    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
    Citation Envoyé par Finelizzyx Voir le message
    Bonjour,

    Je suis peut-être à côté de la plaque, mais un "int" peut atteindre la valeur 850000 ??

    Il faudrait un long, non ? voire un double ?
    Ca dépend de l'implémentation.
    Un long assurerait effectivement la possibilité de représenter correctement la valeur 85000. Mais un double, il ne faut pas exagérer !

  5. #5
    Expert confirmé
    Avatar de Melem
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2006
    Messages
    3 656
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 3 656
    Par défaut
    Citation Envoyé par Finelizzyx Voir le message
    Bonjour,

    Je suis peut-être à côté de la plaque, mais un "int" peut atteindre la valeur 850000 ??

    Il faudrait un long, non ? voire un double ?
    La FAQ est un début de réponse à ta question. Dans la pratique, les processeurs qui équipent nos PCs, Mac, iPhone, iPad, etc. sont tous des processeurs 32 ou 64 bits, sur lesquels la taille d'un int est au moins égale à 32 bits. Les int de 16 bits, c'est souvent dans les vieux PC sous MS-DOS et certains systèmes embarqués.

  6. #6
    Expert confirmé

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 610
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 610
    Billets dans le blog
    2
    Par défaut
    Il te faut regarder le fichier "limits.h" dans le répertoire d'nclude standard..

    http://en.wikipedia.org/wiki/Limits.h

    Mais en 32 bits, on peut quand même stocker un int qui fait plus de 32767 :

    INT_MAX Maximum value for an int +2,147,483,647

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 22/01/2007, 21h51
  2. Probleme d utilisation de template dans le cpp
    Par Math75 dans le forum Langage
    Réponses: 2
    Dernier message: 07/10/2005, 16h26
  3. [Système][Environnement] Problème d'utilisation?!?
    Par waldo2188 dans le forum Général Java
    Réponses: 5
    Dernier message: 23/03/2005, 17h18
  4. Probleme d'utilisation de directX 9 avec visual studio.net
    Par cranedoeuf dans le forum DirectX
    Réponses: 1
    Dernier message: 24/05/2004, 04h33
  5. [Debutant] probleme pour utiliser les classes d'un .jar
    Par pissek dans le forum Eclipse Java
    Réponses: 3
    Dernier message: 12/05/2004, 18h21

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