在C语言中将ASCII数字转换为ASCII字符

21
在C语言中,有一种将以int类型输入的ASCII值转换为对应的ASCII字符的方法吗?您可以使用以下代码实现:`char c = (char)ascii_value;`,其中ascii_value是以int类型输入的ASCII值。

int ia = 65; char ca = (char)ia;int ia = 65; char ca = (char)ia; - TomeeNS
5个回答

30
你可以直接将 int 赋值给 char
int a = 65;
char c = a;
printf("%c", c);

实际上这也是可行的。

printf("%c", a);  // assuming a is in valid range

17
如果 i 是一个整数类型int,那么
char c = i;

将它转换为char类型。如果数据来自不受信任的来源,您可能需要添加一个检查使得它的值小于<128。最好使用<ctype.h>中的isascii函数来完成此操作,如果您的系统支持的话(参见@Steve Jessop对此答案的评论)。


isascii是一个Posix函数,不是标准C。显然,MS也支持它(但已被弃用),因此涵盖了大多数实现。 - Steve Jessop
@Steve,感谢您的纠正,您是正确的。我也把ctype.h拼错成了ctypes.h - Fred Foo

3
如果数字以字符串形式存储(例如由用户输入),您可以使用 atoi() 将其转换为整数。可以直接将整数分配给字符。字符主要因其解释和用途而有所不同。
char c = atoi("61");

1
char A;
printf("ASCII value of %c = %d", c, c);

在这个程序中,用户被要求输入一个字符。该字符被存储在变量c中。 当使用“%d”格式字符串时,显示65(即字符“A”的ASCII值)。 当使用“%c”格式字符串时,直接显示字符“A”本身。
输出: “字符A的ASCII值为65”

-1
#include <stdio.h>
#include <cs50.h>
int d;
int main(void){
    string a = get_string("enter your word: ");
    int i = 0;
    while(a[i] != '\0'){
        printf("%i ", a[i]);
        i++;
    }
    printf("\n");

}

3
目前你的回答不清楚,请[编辑]以添加更多细节,帮助其他人了解它如何回答所提出的问题。你可以在帮助中心找到有关如何撰写良好答案的更多信息。 - Community

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