Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2730 connectés 

  FORUM HardWare.fr
  Programmation
  C

  [C]Extraire un chiffre d'un tableau de char dans un int

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[C]Extraire un chiffre d'un tableau de char dans un int

n°2152141
brikdelay
Posté le 02-08-2012 à 10:50:39  profilanswer
 

Bonjour !
je me remet au C après quelques années de vide afin de résoudre les problème de Project Euler (http://projecteuler.net/)  
Peut être que certain connaissent, enfin toujours est-il que j'ai besoin de convertir un nombre stocké dans un tableau de char en int, et je ne trouve pas de fonctions qui le fasse  :sweat:  
 
un exemple vous parlera plus :
 
char test[]="123456789";
int chiffre=test[2];
printf("Le troisieme chiffre est %d,"chiffre);
 
(l'exemple et inutile mais illustre le principe)
Ca ne plante pas à la compilation, mais quand je lance le programme, ça ne m'affiche pas "Le troisieme chiffre est 3" mais un autre nombre qui n'a rien à voir ?
 
Une explication ? Une solution ?
 
Merci !

mood
Publicité
Posté le 02-08-2012 à 10:50:39  profilanswer
 

n°2152150
Profil sup​primé
Posté le 02-08-2012 à 10:58:44  answer
 

Bonjour, je pense que la fonction "atoi" fairait l'affaire.
 

Citation :

#include <stdlib.h>
int atoi( const char *str );
 
 


Message édité par Profil supprimé le 02-08-2012 à 10:59:49
n°2152156
brikdelay
Posté le 02-08-2012 à 11:02:21  profilanswer
 

error: invalid conversion from 'const char' to 'const char*'
 initializing argument 1 of 'int atoi(const char*)'
 
J'avais deja essayé cette fonction, apparement ça ne fonctionne que pour la conversion du char tout entier dans un int :/

n°2152158
theshockwa​ve
I work at a firm named Koslow
Posté le 02-08-2012 à 11:05:05  profilanswer
 

brikdelay a écrit :

error: invalid conversion from 'const char' to 'const char*'
 initializing argument 1 of 'int atoi(const char*)'
 
J'avais deja essayé cette fonction, apparement ça ne fonctionne que pour la conversion du char tout entier dans un int :/


 
Relis la doc, tu t'es planté dans ton utilisation d'atoi, visiblement. Tu ne dois pas déréférencer le tableau que tu passes en paramètre.
 
Edit : My Bad. Pour ton cas, tu peux t'en sortir avec un int chiffre = test[2] - '0'; C'est pas super élégant, mais ca passera sans doute.
 
Edit 2 : l'autre solution serait d'extraire la sous-chaine qui t'intéresse (à coup de strstr) et d'utiliser atoi.


Message édité par theshockwave le 02-08-2012 à 11:07:37

---------------
last.fm
n°2152160
Profil sup​primé
Posté le 02-08-2012 à 11:05:30  answer
 

Pour passer l'adresse de ton tableau de char, je crois qu'il faut le préfixer d'un '&'.
 

Code :
  1. char test[]="123456789";
  2. int chiffre=atoi(&test);
  3. printf("Le nombre test est %d",chiffre);

n°2152162
theshockwa​ve
I work at a firm named Koslow
Posté le 02-08-2012 à 11:09:05  profilanswer
 


 
non, c'est faux. Un tableau est castable automatiquement en pointeur sans utiliser d'opérateur.
 
Ce qu'il veut en fait, c'est juste le chiffre à un index de la chaine et non pas le nombre représenté par la chaine.


---------------
last.fm
n°2152166
Profil sup​primé
Posté le 02-08-2012 à 11:11:44  answer
 

theshockwave a écrit :


 
non, c'est faux. Un tableau est castable automatiquement en pointeur sans utiliser d'opérateur.
 
Ce qu'il veut en fait, c'est juste le chiffre à un index de la chaine et non pas le nombre représenté par la chaine.


 
Il a dit "nombre".  :o  
 
Si non, la soustraction d'une valeur relative à la table ascii est possible. En effet.

n°2152183
brikdelay
Posté le 02-08-2012 à 11:19:24  profilanswer
 

En effet, ajouter -'0' fonctionne.
C'est moche mais ça marche, merci !
 

Citation :

Il a dit "nombre".  :o  


ouais mais la variable s'appelle "chiffre", jsui a moitié pardonnée :o


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C

  [C]Extraire un chiffre d'un tableau de char dans un int

 

Sujets relatifs
[C#] Service Windows et méthode static d'une dll précompilée [Résolu][C#] Génération de rapport PDF
[PERL] Mixer un tableau[C#] Déploiement d'AddIn Office (vsto), manifest et signature.
problème avec de manager.canvas.draw de matplotlib et gobject.idle_addVariable Tableau qui ne passe pas en condition ( ! )
Quels autres langages pour compléter/allier le C++ ?Programme C++ / Fortran sous Visual 6 - Convention d'appel
Supprimer les MFC d'une application C++Traduction du C vers Ada
Plus de sujets relatifs à : [C]Extraire un chiffre d'un tableau de char dans un int


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR