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

  FORUM HardWare.fr
  Programmation
  C

  [C]Afficher une var int sous la forme d'un char

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[C]Afficher une var int sous la forme d'un char

n°1278371
korxx
Posté le 06-01-2006 à 20:05:49  profilanswer
 

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 :/

mood
Publicité
Posté le 06-01-2006 à 20:05:49  profilanswer
 

n°1278373
korxx
Posté le 06-01-2006 à 20:06:52  profilanswer
 

char a;
int b;
 
si je fais  
 
a='b';
 
ca veut pas compiler :(

n°1278374
olivthill
Posté le 06-01-2006 à 20:08:46  profilanswer
 

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';

n°1278378
korxx
Posté le 06-01-2006 à 20:09:53  profilanswer
 

olivthill a écrit :

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';


 
 
Merci infiniment  :love: , en fait il faut le caster en char, merci bcp bcp bpc :)

n°1278382
korxx
Posté le 06-01-2006 à 20:15:53  profilanswer
 

Mmmh je comprends pas ce que je fais mal, je cast et ca fonctionne pas :(


Message édité par korxx le 06-01-2006 à 20:16:06
n°1278388
moi23372
Posté le 06-01-2006 à 20:20:06  profilanswer
 

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);

n°1278390
moi23372
Posté le 06-01-2006 à 20:22:15  profilanswer
 

olivthill a écrit :

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';


 
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

n°1278392
korxx
Posté le 06-01-2006 à 20:25:08  profilanswer
 

moi23372 a écrit :

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);


 
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 :)


Message édité par korxx le 06-01-2006 à 20:26:01
n°1278396
olivthill
Posté le 06-01-2006 à 20:29:34  profilanswer
 

Citation :

Citation :

c = (char) n + '0';

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


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 !).

Message cité 1 fois
Message édité par olivthill le 06-01-2006 à 20:34:58
n°1278400
Emmanuel D​elahaye
C is a sharp tool
Posté le 06-01-2006 à 20:32:54  profilanswer
 

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).
Je pense que c'est très très facile mais je m'y perds tout le temps lors de ce genre de conversion :/


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.


---------------
Des infos sur la programmation et le langage C: http://www.bien-programmer.fr Pas de Wi-Fi à la maison : http://www.cpl-france.org/
mood
Publicité
Posté le 06-01-2006 à 20:32:54  profilanswer
 

n°1278401
korxx
Posté le 06-01-2006 à 20:34:27  profilanswer
 

olivthill a écrit :

Citation :

Citation :

c = (char) n + '0';

complètement faut ce truc


Désolé moi23372, mais ce n'est pas un concaténation mais une addition.

c = (char) n + '0';

est équivalent à

c = (char) n + 0x30;

ou

c = (char) n + 48;



 
 
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 :
  1. printf("debug %d %d %d %d\n",carb0,carb1,conso0,conso1);
  2.      carb[0]=(char)carb0;
  3.      carb[1]=(char)carb1;
  4.      conso[0]=(char)conso0;
  5.      conso[1]=(char)conso1;
  6.      printf("%c%c%c%c",carb[0],carb[1],conso[0],conso[1]);


Message édité par korxx le 06-01-2006 à 20:37:56
n°1278402
Emmanuel D​elahaye
C is a sharp tool
Posté le 06-01-2006 à 20:34:46  profilanswer
 

moi23372 a écrit :

complètement faut ce truc
 
la concaténation "+" n'est pas permise en C.  


Rien à voir. Ici, on parle d'int, pas de chaines de caractères...
 


---------------
Des infos sur la programmation et le langage C: http://www.bien-programmer.fr Pas de Wi-Fi à la maison : http://www.cpl-france.org/
n°1278403
korxx
Posté le 06-01-2006 à 20:35:56  profilanswer
 

Emmanuel Delahaye a écrit :

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.


 
 
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  :D

Message cité 1 fois
Message édité par korxx le 06-01-2006 à 20:45:34
n°1278404
Emmanuel D​elahaye
C is a sharp tool
Posté le 06-01-2006 à 20:36:31  profilanswer
 

moi23372 a écrit :


 
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.


Le monsieur il a dit (sic!)

Citation :

je précise que c'est un chiffre mon int, donc 1 seul charactere)


---------------
Des infos sur la programmation et le langage C: http://www.bien-programmer.fr Pas de Wi-Fi à la maison : http://www.cpl-france.org/
n°1278405
Emmanuel D​elahaye
C is a sharp tool
Posté le 06-01-2006 à 20:37:17  profilanswer
 

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.
 


---------------
Des infos sur la programmation et le langage C: http://www.bien-programmer.fr Pas de Wi-Fi à la maison : http://www.cpl-france.org/
n°1278406
korxx
Posté le 06-01-2006 à 20:40:06  profilanswer
 

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  :jap:  
 
Probleme résolu donc, merci a ceux qui m'ont aidé  :hello:

n°1595817
neacko
Posté le 04-08-2007 à 11:54:52  profilanswer
 

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).
Je pense que c'est très très facile mais je m'y perds tout le temps lors de ce genre de conversion :/


 
 
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;
}
 
 


---------------
La théorie, c'est quand on sait tout et que rien ne fonctionne. La pratique, c'est quand tout fonctionne et que personne ne sait pourquoi. Ici, nous avons réuni théorie et pratique : Rien ne fonctionne... et personne ne sait pourquoi !
n°1598622
Emmanuel D​elahaye
C is a sharp tool
Posté le 11-08-2007 à 16:32:26  profilanswer
 

neacko a écrit :


j'ai la methode suivante :

#include <cstdlib>




Pas du C. Bonsoir...
 


---------------
Des infos sur la programmation et le langage C: http://www.bien-programmer.fr Pas de Wi-Fi à la maison : http://www.cpl-france.org/
n°1598637
Sve@r
Posté le 11-08-2007 à 18:31:08  profilanswer
 

Emmanuel Delahaye a écrit :


Pas du C. Bonsoir...


 
Surtout avec ça...

neacko a écrit :


using namespace std;


!!!
 

neacko a écrit :

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;
}


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
char c=chiffre + '0'


et basta (+ étant un opérateur d'addition et non de concaténation comme l'a dit moibidule)
 

korxx a écrit :

Merci infiniment  :love: , 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...


Message édité par Sve@r le 11-08-2007 à 20:54:50

---------------
Vous ne pouvez pas apporter la prospérité au pauvre en la retirant au riche.

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

  [C]Afficher une var int sous la forme d'un char

 

Sujets relatifs
[Java 1.5]Afficher la date et l'heurePB pour afficher du xml directement ds du html
afficher un message au passage de la souris[Inno Setup 5] afficher différentes licences selon la langue
afficher une photo...Peut on faire on faire afficher des couleurs ds liste deroulante
[SQL] (noob) difference entre char et varcharAfficher les entrées d'une table mais sans doublons
Comment afficher l'etat des processus dans Cygwin?Script pour afficher la fenêtre "Fermeture de session Windows"
Plus de sujets relatifs à : [C]Afficher une var int sous la forme d'un char


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