web-dev-qa-db-fra.com

Comment convertir des entiers en caractères en C?

Par exemple, si le nombre entier était 97, le caractère serait "a" ou 98 en "b".

3
Derpster13

En C, int, char, long, etc. sont tous les entiers .

Ils ont généralement des tailles de mémoire différentes et donc des plages différentes comme dans INT_MIN à INT_MAX. char et les tableaux de char sont souvent utilisés pour stocker des caractères et des chaînes. Les entiers sont stockés dans de nombreux types: int étant le plus populaire pour un équilibre entre vitesse, taille et portée.

L'ASCII est de loin l'encodage de caractères le plus populaire, mais d'autres existent. Le code ASCII pour un 'A' est 65, 'a' est 97, '\ n' est 10, etc. Les données ASCII sont généralement stockées dans une variable char. Si l'environnement C utilise le codage ASCII, tous les suivants stockent la même valeur dans la variable entière.

int i1 = 'a';
int i2 = 97;
char c1 = 'a';
char c2 = 97;

Pour convertir une int en une char, affectez simplement:

int i3 = 'b';
int i4 = i3;
char c3;
char c4;
c3 = i3;
// To avoid a potential compiler warning, use a cast `char`.
c4 = (char) i4; 

Cet avertissement survient parce que int a généralement une plage plus grande que char et qu'une perte d'informations peut donc survenir. En utilisant la distribution (char), la perte potentielle d'informations est explicitement dirigée.

Pour imprimer la valeur d'un entier:

printf("<%c>\n", c3); // prints <b>

// Printing a `char` as an integer is less common but do-able
printf("<%d>\n", c3); // prints <98>

// Printing an `int` as a character is less common but do-able.
// The value is converted to an `unsigned char` and then printed.
printf("<%c>\n", i3); // prints <b>

printf("<%d>\n", i3); // prints <98>

Il existe d'autres problèmes d'impression, tels que l'utilisation de %hhu ou le transtypage lors de l'impression d'un unsigned char, mais laissez cela pour plus tard. Il y a beaucoup à printf().

11
chux
char c1 = (char)97;  //c1 = 'a'

int i = 98;
char c2 = (char)i;  //c2 = 'b'
1
nhgrif

Lancer le nombre entier sur un caractère fera ce que vous voulez.

char theChar=' ';
int theInt = 97;
theChar=(char) theInt;

cout<<theChar<<endl;

Il n'y a pas de différence entre 'a' et 97 en plus de la manière dont vous les interperet.

1
DanChianucci

Le programme convertit ASCII en alphabet

#include<stdio.h>

void main ()
{

  int num;
  printf ("=====This Program Converts ASCII to Alphabet!=====\n");
  printf ("Enter ASCII: ");
  scanf ("%d", &num);
  printf("%d is ASCII value of '%c'", num, (char)num );
}

Programme convertit Alphabet en ASCII code

#include<stdio.h>

void main ()
{

  char alphabet;
  printf ("=====This Program Converts Alphabet to ASCII code!=====\n");
  printf ("Enter Alphabet: ");
  scanf ("%c", &alphabet);
  printf("ASCII value of '%c' is %d", alphabet, (char)alphabet );
}
0
Amol Damodar
void main ()
 {
    int temp,integer,count=0,i,cnd=0;
    char ascii[10]={0};
    printf("enter a number");
    scanf("%d",&integer);
     if(integer>>31)
     {
     /*CONVERTING 2's complement value to normal value*/    
     integer=~integer+1;    
     for(temp=integer;temp!=0;temp/=10,count++);    
     ascii[0]=0x2D;
     count++;
     cnd=1;
     }
     else
     for(temp=integer;temp!=0;temp/=10,count++);    
     for(i=count-1,temp=integer;i>=cnd;i--)
     {

        ascii[i]=(temp%10)+0x30;
        temp/=10;
     }
    printf("\n count =%d ascii=%s ",count,ascii);

 }
0
kannadasan