我有一个小程序,在那里我说我想输入数组的行和列的数量,然后输入信息来填充该数组的数据。它接下来做什么并不重要,只是省略了代码的一部分并将其放入(...)中。如何限制二维数组上的输入,使其不会爆炸?
int main(){
int nl, nc,i,j,z,n;
scanf ("%d %d\n", &nl,&nc);
char matrix [nl] [nc];
for (i=0;i<nl;i++)
for (j=0;j<nc;j++)
scanf(" %c",&matrix[i][j]);
scanf("%d",&n);
int s[n*2];
for (z=0;z<n*2;z++)
scanf("%d",&s[z]);
int y=0;
char s2[n];
for (z=0;z<n*2;z+=2){
s2[y]=matrix [(s[z])-1][(s[z+1])-1];
y++;
}
for (z=0;z<n;z++)
printf ("%c", s2[z]);
return 0;
}
我的问题是,如果输入比我应该更多的字符,它会炸毁。例如,如果我的输入是:
2 3
ABC
DEF
这工作得很好。
但如果我把:
2 3
ABC
DEFF
它给我一个分割折叠并停止该程序。请记住,我在scanf中的“%c”之前有一个空格,所以它忽略了输入中的“\ n”和空格。
我能做些什么来阻止阵列中的额外字符爆炸?
不可重现。 [现场演示](http://ideone.com/76TDfx)。你的错误在别处。 –
Hi @ n.m。,如果你愿意的话,我可以放下其余的代码...下一步是另一个scanf。为什么我应该用另一个输入进行分段折叠? –
很难弄清楚为什么程序崩溃而没有看到崩溃的程序。您决定是否要发布一个。 –