如何将ASCII值存储到数组中?输出字符为何显示空白?
问题分析与解决
你的代码逻辑本身没问题,但输出空白的核心原因是你输入的数字对应ASCII控制字符(编码范围通常是0-31、127),这类字符属于不可打印的控制指令(比如换行、回车、退格),终端无法显示可见字符,所以会呈现空白。
验证方式
输入可打印ASCII字符的编码(范围32-126)就能正常显示对应字符,比如:
- 输入
65→ 显示大写字母A - 输入
97→ 显示小写字母a - 输入
33→ 显示感叹号!
可选优化方案
如果想避免这种情况,可以在输出前判断输入数字是否在可打印范围内,修改后的代码如下:
#include <stdio.h> int main() { int arr[5], i; printf("Enter 5 numbers:\n"); for (i = 0; i < 5; i++) { scanf("%d", &arr[i]); } printf("ASCII values corresponding to the input numbers:\n"); for (i = 0; i < 5; i++) { if (arr[i] >= 32 && arr[i] <= 126) { printf("%d: %c\n", arr[i], (char)arr[i]); } else { printf("%d: [不可打印控制字符]\n", arr[i]); } } return 0; }
内容的提问来源于stack exchange,提问作者Educational Channel Only
相关产品推荐
相关产品推荐

