如何在C语言中将整数转换为字符?

97

如何在C语言中将整数转换为字符?


投票关闭为不清楚。或者可能与此相同:https://dev59.com/WXnZa4cB1Zd3GeqPnTrT? - Ciro Santilli OurBigBook.com
6个回答

135

C语言中的char类型已经是一个数字(即字符的ASCII码),不需要进行转换。

如果你想将数字转换为对应的字符,可以直接加上'0':

c = i +'0';

'0'是ASCll表中的一个字符。


15
编译器将'0'解释为ASCII编码的零字符,由于在ASCII编码中,数字'0'到'9'填充了一系列简单的代码范围(记得是48到57)。 - user180247
20
当 i 大于等于 10 时,这将不起作用。 - dina
15
@user5980143 没错,但是将 i>9 转换为一个单一字符是不可能的。 - Ofir
在switch语句中会提示:错误的case标签,未能转换为整数常量,但在“if”语句中不会出现此问题。 - user3402040
int length = 10; char len = length + '0'; printf("%c", len);这段代码输出的结果是 : 而不是我想要的 10。ASCII表显示,整数10实际上是LF(换行符)。 - mLstudent33

39
你可以尝试使用atoi()库函数。 同时,sscanf()和sprintf()也会有帮助。
这里是一个小例子,展示如何将整数转换为字符字符串:
main()
{
  int i = 247593;
  char str[10];

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

这里提供另一个示例

#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
*/

在第一个例子中,为什么你要声明str[10]而不是str[7]呢?因为有6个数字,再加上1个用于'\0'的结束符。 - IAbstract
5
atoi与此有何关系? - AnT stands with Russia
7
atoi的作用与OP想要的相反。 - user376845
如果数字大于9,后面的例子将无效。 - kenan bilen

22
只需将 int 赋值给一个 char 变量即可。
int i = 65;
char c = i;
printf("%c", c); //prints A

4
第一行的65后面需要加上一个分号。 - Andrew

16

将整数转换为字符时,只有0到9会被转换。我们知道0的ASCII值为48,因此我们必须将其值加到整数值上,以将其转换为所需的字符,因此

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

8

将int转换为char,请使用以下方法:

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

将char转换为int,请使用以下方法:

char c='5';
int a=c-'0';
printf("%d",a);        //prints 5

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

 }

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接