1

我刚刚开始学习如何用 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;
}

干杯,感谢任何帮助家伙。

4

1 回答 1

3

您需要传递 to 的地址编译器应该为此发出警告):myIntscanf()

scanf("%d", &myInt);

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

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

请注意,int它的范围值比 a 更大,char因此您应该检查存储在其中的值myInt是否适合a 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()之前main()

于 2012-10-18T11:34:29.187 回答