当我声明矩阵时,为什么数组会被窃听?

这就是代码:

#包括<标准h>
#包括<stdlib.h>
int main()
{
int-linhas=0,col=0,num=0,i=0,pos1[100];
int pos[100];
scanf(“d%d%d”、“linhas”、“col”、“num”);
int matriz[linhas][col];
对于(i=0;i<num;i++){
scanf(“c%d”、“pos[i]、”pos1[i]);
}
对于(i=0;i<num;i++){
pos[i]=97;
}
返回0;
}

这很简单,我声明了两个数组,一个用于存储字符的值(pos[]),另一个用于存储整数值(pos1[]),它可以工作:D

问题是,如果我声明一个矩阵ex:矩阵[linhas][col],我的代码不会真正存储字符的值,如果我取下它,它会开始正常存储,同样,我是否在获得行和列(linhas和col)后声明矩阵也无关紧要或者如果我在代码末尾声明它。我不知道问题出在哪里,如果有任何提示,我将不胜感激

int pos[100];
scanf(“d%d%d”、“linhas”、“col”、“num”);
int matriz[linhas][col];
对于(i=0;i<num;i++){
scanf(“c%d”、“pos[i]、”pos1[i]);
}

%c格式说明符将读入一个字符,但它需要一个字符的地址才能读入。你给它一个int的地址

最简单的修复方法是将pos更改为char pos[100]。另一种可能的修复方法是:

(i=0;i<num;i++)的

{
字符c;
scanf(“c%d”、“c”、“pos1[i]);
pos[i]=c;
}

发表评论