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

C语言读取文件数字时存入ASCII值而非实际数值的问题求助

如何将文件中的字符'0'/'1'转换为int类型的0/1存入二维数组

问题出在你直接将字符类型的buffer[x]赋值给int数组。在ASCII编码中,字符'0'对应的十进制值是48,'1'是49,所以数组里会存入这些ASCII值而非你期望的整数0和1。

解决方法很简单:利用ASCII表中数字字符连续排列的特性,将目标字符减去字符'0'的ASCII值,就能得到对应的整数:

while (fgets(buffer, INT_MAX, pF) != NULL)
{   
    for (int x = 0; x < gridW; x++)
    {
        // 跳过行尾的换行符(避免错误赋值)
        if (buffer[x] == '\n') break;
        grid[x][y] = buffer[x] - '0';
    }
     
    y++;
}

这样处理后,字符'0'减去'0'得到整数0,字符'1'减去'0'得到整数1,就能正确将文件中的数字存入int二维数组了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 21:52:03