[C++] Convertir int => char
Résolu/Fermé
Apaachee
Messages postés
248
Date d'inscription
mardi 13 novembre 2007
Statut
Membre
Dernière intervention
25 août 2011
-
3 juin 2009 à 22:14
Apaachee Messages postés 248 Date d'inscription mardi 13 novembre 2007 Statut Membre Dernière intervention 25 août 2011 - 3 juin 2009 à 23:13
Apaachee Messages postés 248 Date d'inscription mardi 13 novembre 2007 Statut Membre Dernière intervention 25 août 2011 - 3 juin 2009 à 23:13
A voir également:
- [C++] Convertir int => char
- Convertir youtube en mp3 avec audacity - Guide
- Telecharger macro convertir chiffre en lettre excel - Télécharger - Tableur
- Convertir epub en kindle - Guide
- Convertir audio en texte word - Guide
- Convertir clavier qwerty en azerty - Guide
11 réponses
Brachior
Messages postés
613
Date d'inscription
dimanche 21 octobre 2007
Statut
Membre
Dernière intervention
22 juin 2009
46
3 juin 2009 à 23:03
3 juin 2009 à 23:03
tu peux transformer un int en char* grace a sprintf
sprintf(char *destination, char *format, ...);
fonctionne comme printf & co sauf que le 1ere argument est la chaine de caractere ou sera stocké la chaine formatée.
exemple :
char buf[50];
int i = 120;
sprintf(buf,"%d",i); // buf = {'1','2','0','\0',...}
sprintf(char *destination, char *format, ...);
fonctionne comme printf & co sauf que le 1ere argument est la chaine de caractere ou sera stocké la chaine formatée.
exemple :
char buf[50];
int i = 120;
sprintf(buf,"%d",i); // buf = {'1','2','0','\0',...}
KX
Messages postés
16753
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
25 novembre 2024
3 019
3 juin 2009 à 22:17
3 juin 2009 à 22:17
À mon avis au final ça fera pas ce que tu veux, mais tu peux essayer :
char c=a+'0';
Apaachee
Messages postés
248
Date d'inscription
mardi 13 novembre 2007
Statut
Membre
Dernière intervention
25 août 2011
47
3 juin 2009 à 22:21
3 juin 2009 à 22:21
hmm de ce que j'ai lu les gens utilisent une fonction stringstream, sprintf ou même atoi mais je ne comprend absolument pas la syntaxe :X
Brachior
Messages postés
613
Date d'inscription
dimanche 21 octobre 2007
Statut
Membre
Dernière intervention
22 juin 2009
46
3 juin 2009 à 22:28
3 juin 2009 à 22:28
atoi prends 3 arguments
le premier est la chaine de caractere a transformer en int
le deuxieme est un pointeur de test de fin
( a tester s'il est egal a '\0' mais pas dans tous les cas, depends de la chaine donnée )
le 3eme est la base dans laquelle la chaine est rentrée
( 2 binaire / 8 octal / 10 decimal / 16 hexadecimal / ... etc )
elle retourne un int resultant de la chaine
exemple :
char *plop = "12354pala";
int test;
char *fin;
test = atoi(plop,&fin,10);
printf("%s %c %d\n",plop,*fin,test); // affiche 12354pala p 12354
le premier est la chaine de caractere a transformer en int
le deuxieme est un pointeur de test de fin
( a tester s'il est egal a '\0' mais pas dans tous les cas, depends de la chaine donnée )
le 3eme est la base dans laquelle la chaine est rentrée
( 2 binaire / 8 octal / 10 decimal / 16 hexadecimal / ... etc )
elle retourne un int resultant de la chaine
exemple :
char *plop = "12354pala";
int test;
char *fin;
test = atoi(plop,&fin,10);
printf("%s %c %d\n",plop,*fin,test); // affiche 12354pala p 12354
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Apaachee
Messages postés
248
Date d'inscription
mardi 13 novembre 2007
Statut
Membre
Dernière intervention
25 août 2011
47
3 juin 2009 à 22:31
3 juin 2009 à 22:31
J'ai lu que ce n'est pas "politiquement correct" en C++ et je n'utilise pas de pointeurs sur mes char :S
Brachior
Messages postés
613
Date d'inscription
dimanche 21 octobre 2007
Statut
Membre
Dernière intervention
22 juin 2009
46
3 juin 2009 à 22:38
3 juin 2009 à 22:38
cette fonction n'est pas appreciée du fait qu'en cas d'erreur elle retourne 0 ( si ma memoire est bonne )
... qui peut etre interprété comme un resultat valide ...
c'est pourquoi on utilise strtol qui prends les meme arguments mais qui gere les erreur ( via errno ^^ )
apres la reponse de KX devrait fonctionnée mais n'est pas dite portable
car il est nulle part mentionné que les chiffres se suivent en informatique
apres tu peux toujours copier ton char dans une chaine de 2char que tu fini par '\0'
et que tu envoies a strtol
... qui peut etre interprété comme un resultat valide ...
c'est pourquoi on utilise strtol qui prends les meme arguments mais qui gere les erreur ( via errno ^^ )
apres la reponse de KX devrait fonctionnée mais n'est pas dite portable
car il est nulle part mentionné que les chiffres se suivent en informatique
apres tu peux toujours copier ton char dans une chaine de 2char que tu fini par '\0'
et que tu envoies a strtol
Apaachee
Messages postés
248
Date d'inscription
mardi 13 novembre 2007
Statut
Membre
Dernière intervention
25 août 2011
47
3 juin 2009 à 22:45
3 juin 2009 à 22:45
Je viens de me rendre compte, je ne souhaite pas transformer un char en int mais un int en char...
Merci de vos réponses =)
Merci de vos réponses =)
Brachior
Messages postés
613
Date d'inscription
dimanche 21 octobre 2007
Statut
Membre
Dernière intervention
22 juin 2009
46
3 juin 2009 à 22:52
3 juin 2009 à 22:52
c'est tres deconseiller de faire ca ... car
char = 1octet (8bits)
int = 4octets (32bits)
tu vas perdre 3octets lors de la conversion ...
char = 1octet (8bits)
int = 4octets (32bits)
tu vas perdre 3octets lors de la conversion ...
Apaachee
Messages postés
248
Date d'inscription
mardi 13 novembre 2007
Statut
Membre
Dernière intervention
25 août 2011
47
3 juin 2009 à 22:58
3 juin 2009 à 22:58
Que faire dans mon cas alors...? Je n'ai pas le choix mon tableau de départ doit être en char et je dois effectuer des calculs simples avec les "nombres" de type char de ce tableau pour ensuite mettre le résultat dans ce tableau.
Apaachee
Messages postés
248
Date d'inscription
mardi 13 novembre 2007
Statut
Membre
Dernière intervention
25 août 2011
47
3 juin 2009 à 23:09
3 juin 2009 à 23:09
Merci brachior!
Apaachee
Messages postés
248
Date d'inscription
mardi 13 novembre 2007
Statut
Membre
Dernière intervention
25 août 2011
47
3 juin 2009 à 23:13
3 juin 2009 à 23:13
*message supprimé*