Afficher une var int sous la forme d'un char [C] - C - Programmation
Marsh Posté le 06-01-2006 à 20:08:46
int n;
char c;
/* Si le but est d'avoir l'entier dans un char */
c = (char) n;
/* Ou bien si le but est d'avoir le code Ascii du chiffre dans un char */
c = (char) n + '0';
Marsh Posté le 06-01-2006 à 20:09:53
olivthill a écrit : int n; |
Merci infiniment , en fait il faut le caster en char, merci bcp bcp bpc
Marsh Posté le 06-01-2006 à 20:15:53
Mmmh je comprends pas ce que je fais mal, je cast et ca fonctionne pas
Marsh Posté le 06-01-2006 à 20:20:06
ben oui c'est logique!
char => 1 byte
int => 4 bytes (suivant le compilo bien sure)
déjà imagine, un char peut avoir qu'un seul caractère. Or un nombre int peut avoir plusieurs caractères.
donc tu dois faire ceci.
int x = 123456;
char chaine[10];
sprintf (chaine, "%d", x);
printf("chaine %s", chaine);
Marsh Posté le 06-01-2006 à 20:22:15
olivthill a écrit : int n; |
complètement faut ce truc
la concaténation "+" n'est pas permise en C. Ce genre de truc peut être fait en C#, ou en JAVA. Mais surement pas en C.
pour concaténé des chaines de caractère en C, on utilise strcat()
voir le man pour plus d'infos
Marsh Posté le 06-01-2006 à 20:25:08
moi23372 a écrit : ben oui c'est logique! |
non je veux le stocker dans un seul char, pas une chaine.
et c'est possible puisque mon int <10.
(c soit 1, 2,3,4,5,6,7,8 ou 9).
or '1' c'est un caractère
Marsh Posté le 06-01-2006 à 20:29:34
Citation :
complètement faut ce truc |
Désolé moi23372, ce n'est pas une concaténation mais une addition.
c = (char) n + '0'; |
est équivalent à
c = (char) n + 0x30; |
ou
c = (char) n + 48; |
Tu peux voir cela dans le man ou dans le K & R (que je consulte régulièrement depuis ... 1988 !).
Marsh Posté le 06-01-2006 à 20:32:54
korxx a écrit : Bon tout est dans le titre, j'ai un int stocké sous une variable, et je veux le stocker dans une variable de type char (je précise que c'est un chiffre mon int, donc 1 seul charactere). |
Si on parle bien de chiffre de 0 à 9 :
Tu ajoutes '0' à la valeur et tu obtiens un int qui représente la valeur numérique du caractère correspondant ('0' - '9') pour ta plateforme. Tu peux le stocker dans un int ou dans un char d'un tableau de char.
Marsh Posté le 06-01-2006 à 20:34:27
olivthill a écrit :
est équivalent à
ou
|
bon alors carb0,carb1,conso0 et conso1 sont 4 int, leur affichage se passe correctement avec le premier printf, ensuite carb et conso sont 2 tableaux de 2 caractères.
par contre quand je les affiche a la fin ben ca va pas du tout je trouve pas du tout mes chiffres
Sinon en rajoutant +'0' a mon int je trouve la valeur du code ascii mais ca m'aide pas pour rentrer ca dans un char
Code :
|
Marsh Posté le 06-01-2006 à 20:34:46
moi23372 a écrit : complètement faut ce truc |
Rien à voir. Ici, on parle d'int, pas de chaines de caractères...
Marsh Posté le 06-01-2006 à 20:35:56
Emmanuel Delahaye a écrit : Si on parle bien de chiffre de 0 à 9 : |
J'ai essayé ca mais quand je le stock dans mon char et que je l'affiche ensuite j'ai des caractères bizarre au lieu de mon chiffre
edit : en fait ca marche cette methode, j'avais fait une petite erreur
Marsh Posté le 06-01-2006 à 20:36:31
moi23372 a écrit : |
Le monsieur il a dit (sic!)
Citation : je précise que c'est un chiffre mon int, donc 1 seul charactere) |
Marsh Posté le 06-01-2006 à 20:37:17
korxx a écrit : J'ai essayé ca mais quand je le stock dans mon char et que je l'affiche ensuite j'ai des caractères bizarre au lieu de mon chiffre |
Montre le code qui ne fonctionne pas.
Marsh Posté le 06-01-2006 à 20:40:06
Emmanuel Delahaye a écrit : Montre le code qui ne fonctionne pas. |
bon ben avec le cast en char je n'y arrive pas, en revanche avec ta methode (faire apparaitre la valeur du code ascii dans l'int et le stocker dans un char) ca marche impec
Merci
Probleme résolu donc, merci a ceux qui m'ont aidé
Marsh Posté le 04-08-2007 à 11:54:52
korxx a écrit : Bon tout est dans le titre, j'ai un int stocké sous une variable, et je veux le stocker dans une variable de type char (je précise que c'est un chiffre mon int, donc 1 seul charactere). |
j'ai la methode suivante :
#include <cstdlib>
#include <iostream>
using namespace std;
main()
{
int b;
char mot[10]={'j','g','t','n','i','k','p','s','e','r'};
printf("ton chiffre 0 a 9 = " );
scanf("%d",&b);
printf("le numero %d correspond a la lettre %c",b,mot[b]);
printf("\n" );
system("PAUSE" );
return EXIT_SUCCESS;
}
Marsh Posté le 11-08-2007 à 16:32:26
neacko a écrit :
|
Pas du C. Bonsoir...
Marsh Posté le 11-08-2007 à 18:31:08
Emmanuel Delahaye a écrit : |
Surtout avec ça...
neacko a écrit : |
!!!
neacko a écrit : main() |
Que c'est compliqué (pourquoi 2 printf et pourquoi passer par un "system" pour programmer une attente ???) !!! Surtout que ton pgm qui va chercher l'élément [b] d'un tableau de char n'a rien à voir avec le pb initial qui est de stocker la représentation littérale d'un chiffre dans une variable "char". La solution d'Olivthill est la plus simple
int chiffre=5 |
et basta (+ étant un opérateur d'addition et non de concaténation comme l'a dit moibidule)
korxx a écrit : Merci infiniment , en fait il faut le caster en char, merci bcp bcp bpc |
Ben pas forcément (ça doit dépendre du niveau de criticité de ton compilo) car "int" et "char" étant sensiblement la même chose (à savoir des nombres codés sur un ou plusieurs bytes), le cast est généralement implicite...
Marsh Posté le 06-01-2006 à 20:05:49
Bon tout est dans le titre, j'ai un int stocké sous une variable, et je veux le stocker dans une variable de type char (je précise que c'est un chiffre mon int, donc 1 seul charactere).
Je pense que c'est très très facile mais je m'y perds tout le temps lors de ce genre de conversion