我试图从文件中读取两种尺寸,然后是矩阵。代码看起来像这样
#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 ++编程,其中一些东西让我感到困惑。
答案 0 :(得分:1)
问题是你没有使用循环控制变量来索引数组。相反,您只使用数组维度,如
mat[n][m] = temp;
当然应该是
mat[i][j] = temp;
印刷循环也有类似的漏洞。
此错误还存在未定义行为副作用,因为按数组维度进行索引将索引超出数组的范围。