将ASCII代码转换为字符值

我刚开始学习如何在C中编程,我正在尝试创建一个接受数字的程序,并将其用作ASCII值来返回与该值相关联的ASCII字符。

程序在预定义参数时工作,但是当我引入scanf函数时,它编译但不会给我相同的结果。

这是我的代码:

#include  int main(void) { question2(); return 0; } int question2(void) { int myInt = 65; scanf("%d", myInt); char ch = myInt; printf("%c",ch); return 0; } 

干杯谢谢你的帮助。

你需要将myInt地址 myIntscanf() (编译器应该为此发出警告):

 scanf("%d", &myInt); 

您还应该检查scanf()的返回值,以确保实际分配了myIntscanf()返回所做的赋值数量,在这种情况下预期为1

 if (1 == scanf("%d", &myInt)) { } 

请注意, int的范围值大于char因此您应该检查myInt存储的值是否适合 char 。 标题limits.h中定义了可用于检查的宏:

 if (1 == scanf("%d", &myInt)) { if (myInt >= CHAR_MIN && myInt <= CHAR_MAX) { printf("%c\n", (char) myInt); } else { printf("%d out-of-range: min=%d, max=%d\n", myInt, CHAR_MIN, CHAR_MAX); } } 

编译器还应该针对question2()发出隐式函数声明警告。 要更正,请在main()之前放置question2()的定义或question2()的声明。