我刚刚开始学习如何在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;
}
欢呼并感谢任何帮助人员。
答案 0 :(得分:3)
您需要将myInt
的地址传递给scanf()
(编译器应该发出警告):
scanf("%d", &myInt);
您还应该检查scanf()
的返回值,以确保实际分配myInt
。 scanf()
返回分配的数量,在这种情况下预计为1
:
if (1 == scanf("%d", &myInt))
{
}
请注意,int
的范围值大于char
,因此您应检查myInt
中存储的值是否适合 {{1} }}。标题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()
之前放置question2()
的定义或question2()
的声明。