Comment convertir une variable de type Char en une de type Int?

Résolu/Fermé
doumbia.danse Messages postés 46 Date d'inscription jeudi 3 juillet 2014 Statut Membre Dernière intervention 16 mars 2015 - 13 juil. 2014 à 05:27
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 - 17 juil. 2014 à 21:38
En effet, j'aimerai savoir s'il y a possibilité de récupérer par exemple une chaine de caractère contenant un nombre et récupérer ce nombre dans une variable de type int
Comme exemple:
char chaine[5]="re54";
int nombre;
Ainsi stocker 54 dans nombre?


Merci d'avance.
A voir également:

4 réponses

fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 835
Modifié par fiddy le 13/07/2014 à 12:00
Oui, pourquoi enlever le "Bonjour" qui est mis automatiquement ?

Sinon, pour répondre à la question, cela dépend.
Est-ce que le nombre sera toujours après "re" ? Toujours en 3ème position ? Ou il peut-être n'importe où ?
Si c'est le cas, quel nombre récupérer s'il y en a plusieurs ?

Cdlt,
Google is your friend
1
Profil bloqué
13 juil. 2014 à 13:39
En fait le Bonjour est mis automatiquement pour les non inscrit.

J'avait pris un page en note hier, mais je trouve plus.
Désolé!
0
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 835
13 juil. 2014 à 13:46
Pas de problème ;-).
0
karara20 Messages postés 32 Date d'inscription mercredi 19 juin 2013 Statut Membre Dernière intervention 13 juillet 2014 9
13 juil. 2014 à 16:20
1
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 835
13 juil. 2014 à 18:45
Je ne vois pas le rapport entre : "récupérer un nombre se trouvant dans une chaine" et "évaluer une expression mathématique"...
0
c"est le même bite ,
car on va si-pare de caractère de nombre ,,exemple (re54 ___ re==+__et 54== ....
0
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 835
13 juil. 2014 à 19:46
Merci de faire attention à l'orthographe...
Sinon, non il n'y a pas de rapport. Sur l'autre post, il faut faire une pile pour pouvoir calculer une expression. Ici, pas besoin. Un simple strtol() fait l'affaire... Après, il faut savoir de combien on décale le pointeur, d'où les questions de mon premier post.
0
sambia39 Messages postés 610 Date d'inscription vendredi 31 juillet 2009 Statut Membre Dernière intervention 9 février 2023 49
13 juil. 2014 à 20:13
Bonjour je suis d'accord avec @fiddy, Mais pourquoi ne pas faire l'évaluation d'un caractère saisie et le comparer avec la plage de code ASCII ( c'est-à-dire )

Décimal Octal Hex Binaire Caractère
--------------------------------------------------------
048 060 30 00110000 0
049 061 31 00110001 1
050 062 32 00110010 2
051 063 33 00110011 3
052 064 34 00110100 4
053 065 35 00110101 5
054 066 36 00110110 6
055 067 37 00110111 7
056 070 38 00111000 8
057 071 39 00111001 9



Pour savoir s'il est un nombre ou pas et par la suite garder le caractère ou tout simplement l'ignoré. au lieux de dire bêtement c"est le même bite ,
car on va si-pare de caractère de nombre ,,exemple (re54 ___ re==+__et 54== ....

à bientôt
0
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 835
13 juil. 2014 à 21:24
Oui. Plutôt que de se reporter aux tables, autant vérifier que le chiffre est compris entre '0' et '9' (la machine fera le boulot à notre place).
Ou tout simplement, il est possible d'utiliser isdigit().
0
Profil bloqué
13 juil. 2014 à 06:40
Bonjour !
0
doumbia.danse Messages postés 46 Date d'inscription jeudi 3 juillet 2014 Statut Membre Dernière intervention 16 mars 2015
13 juil. 2014 à 20:56
Au fait Fiddy, le nombre peut se trouver n'importe où: au début, au milieu ou même à la fin; vous comprenez?
0
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 835
13 juil. 2014 à 21:26
Oui. Et du coup, tu n'as pas répondu à l'ultime question : dans le cas où il y a plusieurs nombres, tu souhaites récupérer lequel ?
Par exemple : "cou531cou75test500ok". Tu souhaites récupérer quel nombre ?
0
doumbia.danse Messages postés 46 Date d'inscription jeudi 3 juillet 2014 Statut Membre Dernière intervention 16 mars 2015
13 juil. 2014 à 21:34
Si possible je souhaiterai créer un tableau de type int, ainsi, en lisant la chaine, à chaque fois que je tombe sur un nombre, récupérer sa valeur dans le tableau, par exemple
int tableau[10];
tableau[0]=531;
tableau[1]=75;
.
.
.
Vous voyez non?
0
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 835
13 juil. 2014 à 22:48
Ok.
Alors, par exemple :
    /*la chaîne contenant les nombres à récupérer*/
    char chaine[]="ar12bzze345to6t7p890";

    char *p=chaine;

    int tab[10];

    char c;
    int ind=0;
    /*nb : nombre temporaire*/
    int nb=0;

    /*permet de savoir s'il faut écrire nb dans le tableau*/
    int ok=0;
    while( (c=*(p++)) != '\0') {
        if (isdigit(c)) {
            nb = (nb*10) + c-'0';
            ok=1;
        }
        else if (ok) {
            tab[ind++] = nb;
            nb=0;
            ok=0;
        }
    }

Il ne te reste plus qu'à afficher le tableau.
Note, ce programme peut être largement améliorer. Notamment, s'il y a plus de 10 nombres, le tableau sera trop petit. Tu peux donc faire en sorte d'une allocation dynamique (malloc()). De plus, tu peux vérifier que nb n'est pas trop grand (nb<=INT_MAX).
Cdlt,
0
doumbia.danse Messages postés 46 Date d'inscription jeudi 3 juillet 2014 Statut Membre Dernière intervention 16 mars 2015
14 juil. 2014 à 01:10
essayant d'afficher le contenu du tableau, ouf !, ce j'ai trouvé ressemble plutôt à l'adresse et non aux valeurs.
0
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 835
14 juil. 2014 à 10:14
Tu as dû faire une petite erreur dans l'affichage du tableau.
Montre le code que tu as mis.
0