我有一個小程序,在那裏我說我想輸入數組的行和列的數量,然後輸入信息來填充該數組的數據。它接下來做什麼並不重要,只是省略了代碼的一部分並將其放入(...)中。如何限制二維數組上的輸入,使其不會爆炸?
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。爲什麼我應該用另一個輸入進行分段摺疊? –
很難弄清楚爲什麼程序崩潰而沒有看到崩潰的程序。您決定是否要發佈一個。 –