2d矩阵不存储值,所有值显示为0

时间:2016-02-14 19:21:23

标签: c

我试图从文件中读取两种尺寸,然后是矩阵。代码看起来像这样

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

int main()
{
    FILE *fp;
    int n,m;

    fp = fopen("grille.txt", "r");
    fscanf(fp, "%d", &n);
    fscanf(fp, "%d", &m);
    int mat[n][m];
    int i,j,temp;
    for(i=0;i<n;i++)
    {
        for(j=0;j<m;j++)
        {
            fscanf(fp, "%d", &temp);
            mat[n][m] = temp;
        }
    }
    fclose(fp);

    for(i=0;i<n;i++)
    {
        for(j=0;j<m;j++)
        {
            printf("%d ",mat[n][m]);
        }
        printf("\n");
    }

}

如果我在阅读时打印出temp,则所有值都会正确显示。但是,当尝试从矩阵中打印它们时,会打印出正确大小的空矩阵。我学会用c ++编程,其中一些东西让我感到困惑。

1 个答案:

答案 0 :(得分:1)

问题是你没有使用循环控制变量来索引数组。相反,您只使用数组维度,如

mat[n][m] = temp;

当然应该是

mat[i][j] = temp;

印刷循环也有类似的漏洞。

此错误还存在未定义行为副作用,因为按数组维度进行索引将索引超出数组的范围。