【发布时间】:2011-10-03 08:39:07
【问题描述】:
在 C 中,有没有办法将输入为 int 的 ASCII 值转换为对应的 ASCII 字符为 char?
【问题讨论】:
-
int ia = 65; char ca = (char)ia;
在 C 中,有没有办法将输入为 int 的 ASCII 值转换为对应的 ASCII 字符为 char?
【问题讨论】:
char A;
printf("ASCII value of %c = %d", c, c);
在这个程序中,要求用户输入一个字符。字符存储在变量 c 中。
使用%d格式字符串时,显示65(A的ASCII值)。
使用%c格式字符串时,会显示A本身。
输出:
ASCII value of A = 65
【讨论】:
如果i 是int,那么
char c = i;
使它成为char。如果该值来自不受信任的来源,您可能需要添加检查以确保该值为 <128。如果您的系统上可用,最好使用来自<ctype.h> 的isascii 完成此操作(请参阅@Steve Jessop 对此答案的评论)。
【讨论】:
isascii 是 Posix 函数,而不是标准 C。MS 显然也支持它(但已弃用),因此涵盖了大多数实现。
ctype.h 拼错为ctypes.h。
如果数字存储在字符串中(如果是用户键入的字符串),您可以使用atoi() 将其转换为整数。
一个整数可以直接赋值给一个字符。一个字符的不同主要是因为它是如何被解释和使用的。
char c = atoi("61");
【讨论】:
您可以直接将int 分配给char。
int a = 65;
char c = a;
printf("%c", c);
事实上这也可以。
printf("%c", a); // assuming a is in valid range
【讨论】: