You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C语言如何将数字字符存入int数组并得到正确的数字值

问题原因

你得到的50、51、52是数字字符对应的ASCII编码值:C语言中char类型本质是存储字符ASCII码的整数,数字字符'0'到'9'的ASCII码是连续的,其中'0'对应48,'1'对应49,以此类推。你原代码直接把字符的ASCII码存入了int数组,打印数组时输出的就是ASCII值,而非字符对应的数字本身。

修复方案

赋值时将读取到的字符减去'0'的ASCII值,就能得到对应的数字整数值,修改后的代码如下:

while((c = getchar()) != EOF) {
    if((c >= '0') && (c <= '9')) {
        ndigits[length] = c - '0';
        length = length + 1;
    }
}

这种写法兼容性更强:不用硬编码固定数值48,即便运行环境的字符集不是ASCII,只要数字字符是连续编码的(符合C语言标准要求),逻辑就能正常生效,同时可读性也更高。

内容的提问来源于stack exchange,提问作者Cristhofer Lugo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 06:45:04