69 votes

Comment convertir un int en char c

Existe-t-il un moyen de convertir un int en un char ?

Edit :

Voici le problème avec la réponse de Jeff Johnson (elle affiche des caractères bizarres) : image

93voto

JaredPar Points 333733

Vous cherchez l'équivalent en char d'un nombre à un chiffre ? Par exemple, convertir 5 en '5' ? Si c'est le cas, vous pouvez procéder comme suit, en supposant bien sûr que le caractère est inférieur ou égal à 9.

char dig = (char)(((int)'0')+i);

47voto

Daniel Earwicker Points 63298

Il y a le bon vieux :

int n = 123;

char c[20];
sprintf(c, "%d", n);

C'est désagréable car quelle devrait être la longueur du tableau c ? Mais c'est extrêmement courant dans le code C dans la nature.

16voto

PsychoDad Points 7582
// an example knowing that 32 is the value for a space character    
int i = 32;
char c = (char)i;

// an example where you want to turn a single digit number into a single char
int i = 1 + (int)'0'; // we want the number one turned into a character, adding the ascii value of 0 starts us off at zero and then we add the single digit. This takes advantage of the fact that 0 to 9 are sequential in the ascii table.

char c = (char)i; // now we have a character that is the single digit representation of the number.

8voto

GManNickG Points 155079

En réponse à votre modification, utilisez simplement printf et spécifiez un entier :

int i = 10;
printf("%d", i);

La raison en est que le 0 représente le chiffre 0. Caractère ASCII Le "0" n'est pas à zéro, mais à 48.

C'est pourquoi Réponse de Jared fonctionnera : char dig = (char)(((int)'0')+i);

Il prend "0" (qui est 48), et y ajoute votre nombre. 0 + 48 est 48, donc 0 devient "0". Si vous convertissez un 1, ce sera 48 + 1, ou 49, ce qui correspond à "1" sur la carte ASCII.

Cela ne fonctionne que pour les chiffres de 0 à 9, car "10" n'est pas un caractère ASCII, mais plutôt "1" suivi d'un "0".

5voto

stanigator Points 2853

Essayez de chercher sprintf . De plus, pour les nombres dont la résolution est inférieure à 8 bits ou 256, vous pouvez les convertir explicitement de int en char.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X