我做學校掃雷艇程序,但我一直對我的代碼得到這個錯誤爲什麼我得到「不能分配一個常量大小爲0的數組」?
不能分配常量大小0
數組我不知道爲什麼發生這種情況;我沒有分配大小 - 我將其設置爲0.另一個問題是,如何通過char
讀取我的輸入char
,以便將其保存在我的數組中?
正如您在下面看到的,我正在使用輸入和輸出。我編寫了我的輸入和輸出結果,這樣你們就可以看到這個程序使用什麼了。我想通過char
來讀取char,這樣我就可以將所有的地圖保存在數組中。
我正在使用MSVC++ 2010。
freopen("input.txt","rt",stdin);
//4 4
//*...
//....
//.*..
//....
//3 5
//**...
//.....
//.*...
//0 0
freopen("output.txt","wt",stdout);
/*Field #1:
*100
2210
1*10
1110
Field #2:
**100
33200
1*100*/
int n=-1;
int m=-1;
int cont =0;
while(n!=0 && m!=0)
{
scanf("%d %d",&n,&m);
int VMatriz[n][m]={0};
int Mapa[n][m]={0};
if (n==0 && m==0)
break;
cont++;
printf("Field #%d",cont);
for (int i=0;i<n;i++)
{ printf("/n");
for (int j=0;j<m;j++)
{
scanf("%d ",&Mapa[i][j]);
if (Mapa[i][j]=='*')
{
if (j-1>=0)
VMatriz[i][j-1]++;
if (j+1<m)
VMatriz[i][j+1]++;
if (i-1>=0)
VMatriz[i-1][j]++;
if (i+1<m)
VMatriz[i+1][j]++;
if (j-1>=0 && i-1>0)
VMatriz[i-1][j-1]++;
if (j-1>=0 && i+1<m)
VMatriz[i+1][j-1]++;
if (j+1<m && i-1>0)
VMatriz[i-1][j+1]++;
if (j+1<m && i+1<m)
VMatriz[i+1][j+1]++;
VMatriz[i][j]='*';
printf("%d",VMatriz[i][j]);
}
}
}
printf("/n");
}
return 0;
}
重新標記爲C,因爲代碼似乎是這樣。 – 2012-03-27 00:32:26
@MikeKwan:夥計們,因爲他使用的是C++編譯器(Visual Studio,沒有明確編譯爲C代碼),所以不能保留爲C,並且問題不是零大小的數組,這只是您看到的第二條錯誤消息。 – 2012-03-27 00:36:09
Ed是正確的,當您嘗試在Visual Studio中編譯這樣的代碼時,您將首先看到常量表達式錯誤,然後看到零大小錯誤。 – ShiggityShiggityShwa 2012-03-27 00:38:17