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 :

Conversion d'un char en int


Sujet :

C

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Août 2005
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 13
    Points : 12
    Points
    12
    Par défaut Conversion d'un char en int
    Bonjour à tous !

    Mon problème est tout ce qu'il y a de plus simple et pourtant il me pose bien des soucis.

    Je dispose d'un tableau de int et d'un tableau de char :

    int chiffres[10] = {0};
    char lettres[10] = "4850301937";

    Ce que je veux c'est remplir le tableau chiffres de telle façon à ce que j'ai :
    chiffres[0] --> 4
    chiffres[1] --> 8
    chiffres[2] --> 5
    chiffres[3] --> 0
    chiffres[4] --> 3
    chiffres[5] --> 0
    chiffres[6] --> 1
    chiffres[7] --> 9
    chiffres[8] --> 3
    chiffres[9] --> 7

    J'insiste bien sur le fait que lettres est de type char et que chiffres est de type int.
    La logique serait donc de faire un boucle ainsi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    for(i = 0; i < 10; i++) {
        chiffres[i] = fonction_de_conversion(lettres[i]);
    }
    Ce que je cherche c'est donc cette fameuse fonction de conversion qui me permet de transformer un char en int.

    Chiffres et Lettres contiennent tous les deux la même chose mais pas sous le même type !

    J'ai déjà essayé atoi(), strtol(), sscanf() mais aucuns ne fonctionnent.
    Voici tout de même mes codes pour atoi() et sscanf() (strtol est comme atoi en plus "sécurisé") :

    ATOI
    -------------------------------------
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    for(i = 0; i < 10; i++) {
        chiffres[i] = atoi(&lettres[i]);
    }
    SSCANF
    -------------------------------------
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    for(i = 0; i < 10; i++) {
        sscanf(&lettres[i], "%ld", &chiffres[i]);
    }
    Ces deux méthodes me sortent les même valeurs qui n'ont rien à voir avec ce que je veux...

    Pouvez-vous m'aider ?
    Merci d'avance

  2. #2
    Membre émérite Avatar de nicolas.sitbon
    Profil pro
    Inscrit en
    Août 2007
    Messages
    2 015
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 2 015
    Points : 2 280
    Points
    2 280
    Par défaut
    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
    #include <stdio.h>
    #define SIZE 10
     
    int main(void)
    { 
      int chiffres[SIZE] = {0};
      char const lettres[SIZE] = "4850301937";
      for (int i = 0; i < SIZE; i++)
      {
         chiffres[i] = lettres[i] - '0';
         printf("%d\n", chiffres[i]);
      }
      getchar();
      return 0;
    }

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Août 2005
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 13
    Points : 12
    Points
    12
    Par défaut
    Merci beaucoup ! Ca marche impec' !

    Juste une dernière question : le getchar() a le même rôle que system("pause"); ?

  4. #4
    Membre émérite Avatar de nicolas.sitbon
    Profil pro
    Inscrit en
    Août 2007
    Messages
    2 015
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 2 015
    Points : 2 280
    Points
    2 280
    Par défaut
    Le getchar() ça me permet à moi en tant qu'utilisateur sous un autre système que windows de faire une pause dans le programme, c'est un équivalent de system("pause") mais portable et surtout standard.
    Cordialement.

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Août 2005
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 13
    Points : 12
    Points
    12
    Par défaut
    Merci beaucoup de tes réponses pour le moins précises

  6. #6
    Membre actif
    Avatar de odsen.s
    Profil pro
    Étudiant
    Inscrit en
    Octobre 2006
    Messages
    269
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2006
    Messages : 269
    Points : 243
    Points
    243
    Par défaut
    Citation Envoyé par nicolas.sitbon Voir le message
    Le getchar() ça me permet à moi en tant qu'utilisateur sous un autre système que windows de faire une pause dans le programme, c'est un équivalent de system("pause") mais portable et surtout standard.
    Cordialement.
    Attention, c'est faux.
    getchar() ne met le programme "en pause" (attente de <entree>) que si stdin est vide, ce qui n'est pas le cas dans l'absolu.

  7. #7
    Membre émérite Avatar de nicolas.sitbon
    Profil pro
    Inscrit en
    Août 2007
    Messages
    2 015
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 2 015
    Points : 2 280
    Points
    2 280
    Par défaut
    Citation Envoyé par nicolas.sitbon Voir le message
    de faire une pause dans le programme
    J'ai précisé dans le programme, biensûr on pourrait dire que l'utilisateur tape quelque chose pendant l'exécution, mais vu le temps de celle ci...

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

Discussions similaires

  1. [Debutant] conversion de char en int
    Par Marc_3 dans le forum Langage
    Réponses: 9
    Dernier message: 31/08/2011, 12h02
  2. Conversion d'un *(?) char vers int
    Par theclem35 dans le forum Débuter
    Réponses: 3
    Dernier message: 02/06/2011, 14h08
  3. conversion d'une char* en int
    Par damien99 dans le forum MFC
    Réponses: 25
    Dernier message: 06/03/2006, 12h27
  4. [Conversion]Convertir un char[] en int
    Par ThanosT dans le forum Général Java
    Réponses: 10
    Dernier message: 11/11/2005, 12h23
  5. "Conversion" d'un char en int ou longueur
    Par Michaël dans le forum C
    Réponses: 6
    Dernier message: 15/08/2003, 11h40

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