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
相关产品推荐
相关产品推荐

