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

如何使用malloc函数将文件中的整数值存储到二维数组中

修正实现方案

你现有代码存在两处需要先修正的问题:

  • 变量拼写冲突:你定义的列数变量为colu,但循环逻辑中使用的是col,会直接编译报错
  • 数组类型不匹配:目标文件存储的是带小数的浮点数,用int类型数组会丢失小数部分,需要替换为float或double类型

完整可运行代码

#include <stdio.h>
#include <stdlib.h>

int main() {
    int row = 0, col = 3, j, i;
    FILE *fp;
    // 打开文件,增加打开失败判断
    fp = fopen("file.txt", "r");
    if (fp == NULL) {
        printf("文件打开失败,请检查file.txt是否存在\n");
        return 1;
    }
    // 读取行数
    fscanf(fp, "%d", &row);
    // 申请float类型数组存储浮点数,增加申请失败判断
    float *arr = (float *)malloc(row * col * sizeof(float));
    if (arr == NULL) {
        printf("内存申请失败\n");
        fclose(fp);
        return 1;
    }
  
    for (i = 0; i < row; i++) {
        for (j = 0; j < col; j++) {
            // 直接从文件读取浮点数存入对应数组位置
            fscanf(fp, "%f", arr + i * col + j);
            printf("%.1f ", *(arr + i * col + j));
        }
        printf("\n");
    }

    // 收尾操作:关闭文件、释放内存
    fclose(fp);
    free(arr);
    return 0;
}

核心修改说明

  1. 统一列数变量名为col,避免拼写错误
  2. 将数组类型从int替换为float,适配文件中的浮点数据
  3. 把原本手动赋值i+j的逻辑替换为fscanf读取文件内容,直接写入数组对应位置
  4. 补充了文件打开、内存申请的异常判断,方便排查问题
  5. 增加了fclose关闭文件、free释放堆内存的逻辑,避免资源泄漏

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 12:18:00