我刚开始学习如何用 C 语言编程,我正在尝试编写一个接受数字并将其用作 ASCII 值以返回与该值关联的 ASCII 字符的程序。
程序在预定义参数时工作,但当我引入 scanf 函数时它编译但没有给我相同的结果。
这是我的代码:
#include <stdio.h>
int main(void)
{
question2();
return 0;
}
int question2(void)
{
int myInt = 65;
scanf("%d", myInt);
char ch = myInt;
printf("%c",ch);
return 0;
}
欢呼并感谢任何帮助的人。
最佳答案
您需要将myInt
的地址 传递给scanf()
(编译器应该为此发出警告):
scanf("%d", &myInt);
您还应该检查 scanf()
的返回值以确保 myInt
确实被分配给了。 scanf()
返回分配的次数,在本例中应为 1
:
if (1 == scanf("%d", &myInt))
{
}
请注意 int
具有比 char
更大的范围值,因此您应该检查存储在 myInt
中的值 是否适合 转换为 char
。 header 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()
发出一个隐式函数声明警告。要更正,请将 question2()
的定义或 question2()
的声明放在 main()
之前。
关于将 ASCII 码转换为字符值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12953665/