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 :

cast char* en long int, pb avec taille du long int


Sujet :

C

  1. #1
    Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Mai 2011
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2011
    Messages : 5
    Points : 4
    Points
    4
    Par défaut cast char* en long int, pb avec taille du long int
    Bonjour,

    Je dois réaliser une calculatrice en c. Je demande à l'utilisateur d'entre le calcul que je stock dans une chaine de caractère. Par exemple, l'utilisateur entre "28*2", je stock ce calcul dans un char*.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    char* chaine = (char*)malloc(1000*sizeof(char));
    Le but de la calculatrice est de pouvoir aller des entiers allant de -2147483648 à 2147483647. Il me faut donc utiliser les long int.

    Je parcours ensuite la chaine, et souhaite transformer les nombres en long.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    char* nombre = (char*)malloc(1000*sizeof(char));
     
    while(estNumerique(chaine[i])) //si nombre à plusieurs chiffres
          {
    	sprintf(nombre, "%s%c", nombre, chaine[i]); //concatène le chiffre courant à la suite de nombre
    	i++;
          }
     
    long valeur_entiere = strtol(nombre,NULL,10); //cast la chaine nombre en long
    Il n'y a pas d'erreur, mais lorsque je souhaite calculer par exemple 67+100, le résultat que j'obtiens est -89. Les résultats que j'obtiens ne sont jamais supérieur à la taille d'un char, c'est à dire toujours entre -128 et 127.

    Lorsque je cast en long int je pense que la taille reste à la taille d'un char et je ne comprends pas pourquoi. Quelqu'un peut il m'aider ?

    Merci bien

  2. #2
    Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Mai 2011
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2011
    Messages : 5
    Points : 4
    Points
    4
    Par défaut Résolu
    C'est bon, j'avais oublié de modifier les types de ma pile où j'empilais.

    Problème résolu.

Discussions similaires

  1. [2012] Job de backup de log plus long que normal avec taille de fichier inchangée
    Par Study2007 dans le forum Administration
    Réponses: 2
    Dernier message: 30/10/2014, 12h27
  2. petit probleme avec un (unsigned long int)
    Par Micks71 dans le forum C
    Réponses: 6
    Dernier message: 19/05/2006, 12h08
  3. Div scrollable avec taille en %
    Par Oluha dans le forum Balisage (X)HTML et validation W3C
    Réponses: 3
    Dernier message: 08/04/2005, 11h09
  4. Quelle taille pour un int ?
    Par elitost dans le forum Langages de programmation
    Réponses: 5
    Dernier message: 14/02/2005, 08h20
  5. Problème avec un champ 'long'
    Par yannick dans le forum Débuter
    Réponses: 2
    Dernier message: 25/07/2003, 14h17

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