2010-02-17 22 views

risposta

55

Un carattere in C è già un numero (il codice ASCII del carattere), non è richiesta alcuna conversione.

Se si desidera convertire una cifra per il carattere corrispondente, si può semplicemente aggiungere '0':

c = i +'0'; 

Il '0' è un personaggio nella tabella ASCll.

+9

Lo '0' viene interpretato dal compilatore come rappresentante il codice ASCII del carattere zero e dato che in ASCII le cifre da '0' a '9' riempiono un semplice intervallo di codici (da 48 a 57 IIRC). – Steve314

+4

non funziona per i> = 10 – dina

+2

@ user5980143 true, ma non è possibile convertire i> 9 in _single_ char – Ofir

10

Basta assegnare lo int a una variabile char.

int i = 65; 
char c = i; 
printf("%c", c); //prints A 
+3

È necessario aggiungere un punto e virgola dopo il 65 sulla riga 1 – Andrew

15

È possibile provare la funzione di libreria atoi(). Anche sscanf() e sprintf() potrebbero essere d'aiuto.

Ecco un piccolo esempio per mostrare la conversione intero a stringa di caratteri:

main() 
{ 
    int i = 247593; 
    char str[10]; 

    sprintf(str, "%d", i); 
    // Now str contains the integer as characters 
} 

Qui per un'altra Esempio

#include <stdio.h> 

int main(void) 
{ 
    char text[] = "StringX"; 
    int digit; 
    for (digit = 0; digit < 10; ++digit) 
    { 
     text[6] = digit + '0'; 
     puts(text); 
    } 
    return 0; 
} 

/* my output 
String0 
String1 
String2 
String3 
String4 
String5 
String6 
String7 
String8 
String9 
*/ 
+0

Nel primo esempio, perché hai dichiarato 'str [10]' invece di 'str [7]' dato che ci sono 6 cifre e consentendo 1 per '' \ 0''? – IAbstract

+4

Cosa c'entra "atoi" con esso? – AnT

+2

'atoi' fa il contrario di ciò che OP vuole. – Mahouk

2

Per convertire int a char uso:

int a=8; 
char c=a+'0'; 
printf("%c",c);  //prints 8 

Per Converti char in uso interno:

char c='5'; 
int a=c-'0'; 
printf("%d",a);  //prints 5 
1
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); 

} 
2

convertire integer a char solo da 0 a 9 saranno convertiti come valore ASCII 0s è 48 quindi dobbiamo aggiungere il valore da convertire in nel carattere desiderato quindi

int i=5; 
char c = i+'0'; 
Problemi correlati