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
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
A voir également:
- Comment convertir une variable de type Char en une de type Int?
- Convertir youtube en mp3 avec audacity - Guide
- Telecharger macro convertir chiffre en lettre excel - Télécharger - Tableur
- Changer le type de fichier - Guide
- Convertir char en int c - Forum C
4 réponses
fiddy
Messages postés
11069
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
23 avril 2022
1 841
Modifié par fiddy le 13/07/2014 à 12:00
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
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
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
13 juil. 2014 à 16:20
fiddy
Messages postés
11069
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
23 avril 2022
1 841
13 juil. 2014 à 18:45
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"...
fiddy
Messages postés
11069
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
23 avril 2022
1 841
13 juil. 2014 à 19:46
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.
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.
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
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 )
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
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
fiddy
Messages postés
11069
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
23 avril 2022
1 841
13 juil. 2014 à 21:24
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().
Ou tout simplement, il est possible d'utiliser isdigit().
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
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?
fiddy
Messages postés
11069
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
23 avril 2022
1 841
13 juil. 2014 à 21:26
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 ?
Par exemple : "cou531cou75test500ok". Tu souhaites récupérer quel nombre ?
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
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?
int tableau[10];
tableau[0]=531;
tableau[1]=75;
.
.
.
Vous voyez non?
fiddy
Messages postés
11069
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
23 avril 2022
1 841
13 juil. 2014 à 22:48
13 juil. 2014 à 22:48
Ok.
Alors, par exemple :
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,
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,
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
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.
fiddy
Messages postés
11069
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
23 avril 2022
1 841
14 juil. 2014 à 10:14
14 juil. 2014 à 10:14
Tu as dû faire une petite erreur dans l'affichage du tableau.
Montre le code que tu as mis.
Montre le code que tu as mis.
13 juil. 2014 à 13:39
J'avait pris un page en note hier, mais je trouve plus.
Désolé!
13 juil. 2014 à 13:46