2010-02-17 15 views

Antwort

55

Ein Zeichen in C ist bereits eine Zahl (der ASCII-Code des Zeichens), keine Konvertierung erforderlich.

Wenn Sie eine Ziffer auf das entsprechende Zeichen konvertieren möchten, können Sie einfach ‚0‘ hinzufügen:

c = i +'0'; 

Die ‚0‘ ein Zeichen in der ASCII-Tabelle ist.

+9

Die '0' wird vom Compiler so interpretiert, dass sie den ASCII-Code des Nullzeichens darstellt, und in ASCII geben die Ziffern '0' bis '9' einen einfachen Bereich von Codes (48 bis 57 IIRC) an. – Steve314

+4

funktioniert nicht für i> = 10 – dina

+2

@ user5980143 true, aber es ist nicht möglich, i> 9 in ein _single_ char – Ofir

10

Ordnen Sie die int einfach einer Variablen char zu.

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

Sie müssen nach 65 in Zeile 1 ein Semikolon hinzufügen – Andrew

15

Sie können atoi() Bibliotheksfunktion versuchen. Auch sscanf() und sprintf() würden helfen.

Hier ist ein kleines Beispiel Umwandeln Ganzzahl Zeichenfolge zu zeigen:

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

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

hier für ein weiteres Beispiel

#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

Im ersten Beispiel, warum haben Sie 'str [10]' anstelle von 'str [7]' deklariert, da es 6 Ziffern gibt und 1 für '' \ 0''? – IAbstract

+4

Was hat 'atoi' damit zu tun? – AnT

+2

'atoi' macht das Gegenteil dessen, was OP will. – Mahouk

2

Int konvertieren Verwendung verkohlen:

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

Zur Konvertieren von char in int verwenden:

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

Ganzzahl umgewandelt werden nur 0 bis 9 verkohlen als 0s ASCII-Wert umgewandelt werden, ist 48, so müssen wir seinen Wert hinzufügen zu konvertieren in in die gewünschten Zeichen daher

int i=5; 
char c = i+'0'; 
Verwandte Themen