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 de char vers int


Sujet :

C

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 22
    Points : 25
    Points
    25
    Par défaut Cast de char vers int
    Bonjour à tous,

    Comme le titre du post l'indique je suis un peu débutant en C et je solicite votre aide.

    Mon problème est que je veux faire un cast d'un char en int, pour qu'elle raison, en fait je saisie une valeur numérique dans un PromptPopup, qui veut lui un char en retour, la valeur que je saisie je veux m'en servir après pour faire saisir le nombre de données voulue lors de la saisie de la première valeur.

    Le code que j'ai fais fonctionne mais la conversion est pas bonne, pouvez vous me dire comment on fait un cast d'un char vers un int s'il vous plait.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    PromptPopup ("Nombre de valeur", "Saisir le nombre de valeur du graphique", temp, 3);
    NbValeur = (int)temp;
    Par exemple si je saisie la valeur 1, 2, ou 10 ma variable temp a toujours pour valeur "4231664".

    Merci de votre aide.

  2. #2
    Membre habitué Avatar de Dark-Water
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2006
    Messages
    142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

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

    Informations forums :
    Inscription : Juin 2006
    Messages : 142
    Points : 159
    Points
    159
    Par défaut
    essaye
    int a;
    a = atoi(temp);

    ca devrait rouler tout seul tu vas recuperer la valeur numérique de ton char
    est mon ami !!!

  3. #3
    Rédacteur/Modérateur
    Avatar de Trap D
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    4 942
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 4 942
    Points : 6 498
    Points
    6 498
    Par défaut
    Il ne faut plus utiliser atoi depuis des lustres mais à la place strtol(temp, NULL, 10);
    "La haine seule fait des choix" - Koan Zen
    "Il ne faut pas être meilleur que les autres, il faut être meilleur que soi." Albert Jacquard
    "Ceux qui savent où ils ont posé leur parapluie ne sont pas alcooliques." - pgibonne.
    Faites du Prolog, ça vous changera les idées !
    Ma page Prolog
    Mes codes sources commentés

    Mon avatar : La Madeleine à la veilleuse de Georges de La Tour

  4. #4
    Membre confirmé Avatar de Mayti4
    Inscrit en
    Février 2004
    Messages
    442
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 442
    Points : 488
    Points
    488
    Par défaut
    PromptPopup ("Nombre de valeur", "Saisir le nombre de valeur du graphique", temp, 3);
    temp est un tableau de caractères ?

    Si oui, utilise la fonction strtol pour le convertir en entier.
    L'itération est humaine; la récursion, divine.

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 22
    Points : 25
    Points
    25
    Par défaut
    Alors je vous remercie bien de la réponse, éffectivement en utilisant la function strtolça marche pas mal, mais j'ai une autre question. Pourquoi dans la réponse de "TrapD" il y a 10 en valeur pour int Base ?

  6. #6
    Membre habitué Avatar de Dark-Water
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2006
    Messages
    142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

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

    Informations forums :
    Inscription : Juin 2006
    Messages : 142
    Points : 159
    Points
    159
    Par défaut
    Citation Envoyé par Trap D
    Il ne faut plus utiliser atoi depuis des lustres mais à la place strtol(temp, NULL, 10);
    pourquoi ???

    De plus atoi et strtol ne font pas la même chose !!!!!
    atoi converti caractere ascii => entier
    strtol converti chaine de caractere => long

    c pas tout à fait pareil!!! (même si y'a pas une grosse différence)
    est mon ami !!!

  7. #7
    Rédacteur

    Avatar de gege2061
    Femme Profil pro
    Administrateur de base de données
    Inscrit en
    Juin 2004
    Messages
    5 840
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Juin 2004
    Messages : 5 840
    Points : 11 625
    Points
    11 625
    Par défaut
    Citation Envoyé par Bernardtapis
    Pourquoi dans la réponse de "TrapD" il y a 10 en valeur pour int Base ?
    man strtol

    Citation Envoyé par Dark-Water
    De plus atoi et strtol ne font pas la même chose !!!!!
    atoi converti caractere ascii => entier
    strtol converti chaine de caractere => long
    Euh non atoi prend en argument une chaîne de caractère.

  8. #8
    Rédacteur/Modérateur
    Avatar de Trap D
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    4 942
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 4 942
    Points : 6 498
    Points
    6 498
    Par défaut
    La fonctions strtol fournit des fonctionnalités supérieures à atoi qui est "deprecated" depuis un bon moment (Emmanuel pourrait de dire la date)
    Entre autres
    elle fournit le point d'arrêt de la conversion,
    une valeur indiquant le dépassement de capacité (LONG_MAX ou LONG_MIN) alors que le retour de atoi est indéfini en cas de dépassement
    "La haine seule fait des choix" - Koan Zen
    "Il ne faut pas être meilleur que les autres, il faut être meilleur que soi." Albert Jacquard
    "Ceux qui savent où ils ont posé leur parapluie ne sont pas alcooliques." - pgibonne.
    Faites du Prolog, ça vous changera les idées !
    Ma page Prolog
    Mes codes sources commentés

    Mon avatar : La Madeleine à la veilleuse de Georges de La Tour

  9. #9
    Membre averti
    Avatar de Foobar1329
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    283
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Finistère (Bretagne)

    Informations forums :
    Inscription : Juin 2006
    Messages : 283
    Points : 387
    Points
    387
    Par défaut
    Citation Envoyé par Bernardtapis
    Alors je vous remercie bien de la réponse, éffectivement en utilisant la function strtolça marche pas mal, mais j'ai une autre question. Pourquoi dans la réponse de "TrapD" il y a 10 en valeur pour int Base ?
    Hé bien parce qu'il s'agit de la base de conversion désirée. Cela signifie que le nombre voulu, quand il est sous forme chaine de caractères, correspond à un nombre en base 10 avant conversion.

    Exple: tu peux avoir une chaine de caractères comme suit "10011" et récupérer le nombre entier correspondant. Son écriture peut correspondre au nombre 10011 (si 10011 en base 10) ou au nombre 19 (si 10011 en base 2). Il faut donc préciser la base de conversion désirée.

    A+

  10. #10
    Membre expert
    Avatar de Pragmateek
    Homme Profil pro
    Formateur expert .Net/C#
    Inscrit en
    Mars 2006
    Messages
    2 635
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Formateur expert .Net/C#
    Secteur : Conseil

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 635
    Points : 3 958
    Points
    3 958
    Par défaut
    (Emmanuel pourrait de dire la date)
    1989:
    http://www.developpez.net/forums/sho...3&postcount=19
    Formateur expert .Net/C#/WPF/EF Certifié MCP disponible sur Paris, province et pays limitrophes (enseignement en français uniquement).
    Mon blog : pragmateek.com

  11. #11
    Rédacteur/Modérateur
    Avatar de Trap D
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    4 942
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 4 942
    Points : 6 498
    Points
    6 498
    Par défaut
    Merci Emmanuel seriousme
    "La haine seule fait des choix" - Koan Zen
    "Il ne faut pas être meilleur que les autres, il faut être meilleur que soi." Albert Jacquard
    "Ceux qui savent où ils ont posé leur parapluie ne sont pas alcooliques." - pgibonne.
    Faites du Prolog, ça vous changera les idées !
    Ma page Prolog
    Mes codes sources commentés

    Mon avatar : La Madeleine à la veilleuse de Georges de La Tour

  12. #12
    Membre habitué Avatar de Dark-Water
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2006
    Messages
    142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

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

    Informations forums :
    Inscription : Juin 2006
    Messages : 142
    Points : 159
    Points
    159
    Par défaut
    oki ben c'est bon à savoir comme ca je vais plus passé pour un papy de l'informatique
    est mon ami !!!

  13. #13
    Membre averti
    Avatar de Foobar1329
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    283
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Finistère (Bretagne)

    Informations forums :
    Inscription : Juin 2006
    Messages : 283
    Points : 387
    Points
    387
    Par défaut
    Hello,

    Citation Envoyé par Dark-Water
    pourquoi ???

    De plus atoi et strtol ne font pas la même chose !!!!!
    Vrai. atoi est équivalent à (int)strtol(nptr, NULL, 10) excepté pour le comportement en cas d'erreur.

    Citation Envoyé par Dark-Water

    atoi converti caractere ascii => entier
    strtol converti chaine de caractere => long

    c pas tout à fait pareil!!! (même si y'a pas une grosse différence)
    [/QUOTE]

    La différence majeure n'est pas là, atoi() ne fera que de la base 10 quand strtol() sera capable de traiter des bases de 2 à 36 (je crois mais pas sûr) et permettra surtout une meilleure gestion en cas d'erreur.

    A+

  14. #14
    Rédacteur

    Avatar de gege2061
    Femme Profil pro
    Administrateur de base de données
    Inscrit en
    Juin 2004
    Messages
    5 840
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Juin 2004
    Messages : 5 840
    Points : 11 625
    Points
    11 625
    Par défaut
    Citation Envoyé par Foobar1329
    sera capable de traiter des bases de 2 à 36 (je crois mais pas sûr) et permettra surtout une meilleure gestion en cas d'erreur.
    Je confirme (cf man page)

  15. #15
    Rédacteur/Modérateur
    Avatar de Trap D
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    4 942
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 4 942
    Points : 6 498
    Points
    6 498
    Par défaut
    gege2061 >> big boss man
    "La haine seule fait des choix" - Koan Zen
    "Il ne faut pas être meilleur que les autres, il faut être meilleur que soi." Albert Jacquard
    "Ceux qui savent où ils ont posé leur parapluie ne sont pas alcooliques." - pgibonne.
    Faites du Prolog, ça vous changera les idées !
    Ma page Prolog
    Mes codes sources commentés

    Mon avatar : La Madeleine à la veilleuse de Georges de La Tour

  16. #16
    Rédacteur

    Avatar de gege2061
    Femme Profil pro
    Administrateur de base de données
    Inscrit en
    Juin 2004
    Messages
    5 840
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Juin 2004
    Messages : 5 840
    Points : 11 625
    Points
    11 625
    Par défaut
    Citation Envoyé par Trap D
    gege2061 >> big boss man
    mais je n'ai rien fait, suffit de lire les pages man et d'avoir un peu de logique. Enfin toute excuse est bonnes pour trinquer

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

Discussions similaires

  1. Convertion char vers int
    Par barthelv dans le forum C
    Réponses: 8
    Dernier message: 08/10/2011, 21h45
  2. Conversion d'un *(?) char vers int
    Par theclem35 dans le forum Débuter
    Réponses: 3
    Dernier message: 02/06/2011, 14h08
  3. [question] cast de long vers int
    Par Faiche dans le forum Langage
    Réponses: 3
    Dernier message: 29/11/2006, 10h22
  4. [(cast)] convertir un char en int...
    Par APoLLoN1234 dans le forum C++
    Réponses: 12
    Dernier message: 15/03/2006, 23h15
  5. Réponses: 12
    Dernier message: 31/12/2005, 16h01

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