C语言 读取时出现 fscanf 分段错误



我目前正在尝试使用值初始化二维数组,但一直遇到分段错误......我注意到当我添加 fscanf 代码行时它总是发生......但我不明白它有什么问题,因为根据我的理解,它应该有效......这是一个代码片段:

    FILE * fp;
        int count, i,j;
        int **arr;
        arr = (int**)malloc(sizeof(int*)*9);
        for(i = 0; i < 9; i++){
            arr[i] = (int*)malloc(sizeof(int)*9);
        }    
fp = fopen("input.txt", "r");
    for(i = 0; i < 9; i++){
            for(j = 0; j < 9; j++){
                fscanf(fp, "%d", &arr[i][j]);
            }
        }

在你的代码中,你既没有

  • 检查malloc()是否成功
  • 检查了fopen()的成功。

对于任何一种情况,

  1. 如果malloc()失败,它将返回 NULL,使用该指针将导致未定义的行为。

  2. 如果fopen()失败,它将返回 NULL,稍后使用文件指针将再次导致未定义的行为。

为所有库函数(通常)的成功输入一个 chcek,并且仅在它们成功时才使用返回值。

相关内容

  • 没有找到相关文章

最新更新