[C++] Convertir int => char

Résolu
Apaachee Messages postés 261 Statut Membre -  
Apaachee Messages postés 261 Statut Membre -
Bonjour,

je possède un tableau de caractères :

char tab[10];

char var = char[1];


Je convertit "var" en int :

int varI = var - '0';


Je fais une opération sur varI

int a = varI / 5;


Comment reconvertir l'entier "a" en char pour le remettre dans "tab" ?
Configuration: Windows Vista
Firefox 3.0.10

11 réponses

  1. Brachior Messages postés 616 Statut Membre 46
     
    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',...}
    1
  2. KX Messages postés 19031 Statut Modérateur 3 020
     
    À mon avis au final ça fera pas ce que tu veux, mais tu peux essayer :
    char c=a+'0';
    0
  3. Apaachee Messages postés 261 Statut Membre 47
     
    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
    0
  4. Brachior Messages postés 616 Statut Membre 46
     
    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
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. Apaachee Messages postés 261 Statut Membre 47
     
    J'ai lu que ce n'est pas "politiquement correct" en C++ et je n'utilise pas de pointeurs sur mes char :S
    0
  7. Brachior Messages postés 616 Statut Membre 46
     
    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
    0
  8. Apaachee Messages postés 261 Statut Membre 47
     
    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 =)
    0
  9. Brachior Messages postés 616 Statut Membre 46
     
    c'est tres deconseiller de faire ca ... car
    char = 1octet (8bits)
    int = 4octets (32bits)

    tu vas perdre 3octets lors de la conversion ...
    0
  10. Apaachee Messages postés 261 Statut Membre 47
     
    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.
    0
  11. Apaachee Messages postés 261 Statut Membre 47
     
    Merci brachior!
    0
  12. Apaachee Messages postés 261 Statut Membre 47
     
    *message supprimé*
    0