2011-10-18 35 views
-2

我有一個一個維數組,我怎麼可以將信息存儲在一個二維數組,我曾嘗試下面的代碼,但它並沒有正常工作......如何將信息從一維數組複製到二維數組?

for (y=0; y<gar; y++) 
{ 
for (l=0; l<kk; l++)          
for(k=0; k<kk; k++) 
mas[l][k]=arr[y];    {Probably problem is in this line, I don't know the right way to switch information... 
printf("%d",mas[l][k]); 
getch(); 

感謝您的幫助傢伙.. 。

+1

發佈完整的代碼......你有開放的括號和不好的縮進。 –

+0

我懷疑你在這裏發佈的內容甚至可以編譯,但是我猜你正在編寫每個'arr'在'mas'的所有字段上。所以最後'mas'的所有字段將包含'arr [gar - 1]'。我相信你想要做的是將(l,k)對映射到y值。從我所看到的我認爲你應該在y上省略'for'並設置'y = l * kk + k;'。 – Nobody

回答

3

那麼假定已分配的內存以正確的方式,線性索引「i」的2D陣列與XDIM和YDIM大小可以被計算爲

I = X + Y * XDIM; (當然你可以改變順序,如果能更好地滿足您的數據)

所以您一維數組轉換爲二維數組,你會使用這樣一個循環:

for(y=0; y < YDIM; ++y) { 
    for (x=0; x < XDIM; ++x) { 
    mas[x][y] = arr[x+y*XDIM]; 
    } 
} 

在假設「MAS 「的大小爲[XDIM] [YDIM],」arr「的大小爲XDIM * YDIM。

相關問題