将 ASCII 码转换为字符值

标签 c character ascii

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

相关文章:

c - fork() 系统调用的工作原理

c - 简单的C语言堆栈程序

javascript - Ruby on Rails 显示 f.text_area 的剩余字符数

r - 从 R 中的文本中提取字符级 n-gram

java - 用 java 以纯文本形式编写耸肩 ASCII 表情符号¯\_(ツ)_/¯

c++ - 在 LCD 上显示整数

mysql - 无法在 MySQL 中修剪() Char(195)

c - 如何从数组中打印出指针指向的值

C 获取单词文本文件中的行数

c - 这段代码打印了什么以及为什么?