2011-05-19 62 views
1

的數組我有:如何字符複製到字符

char frame[4][8]; 
char szBuff[8] = ""; 

,我希望做這樣的事情:

frame[i][j] = szBuff[0]; 

,但它不工作:

Access violation reading location 0xcccccccc. 
+11

你將需要發佈整個循環(與i和j遞增)或無論哪個代碼寫入它。你剛剛粘貼的代碼中沒有任何固有的錯誤。 – yan 2011-05-19 17:04:21

回答

0

確保你的i和j沒有出陣...

例如:

i = 5; 
j = 7; 
frame[i][j] = szBuff[0]; 

不行;

此代碼:

char frame[4][8]; 
char szBuff[8] = "1"; 
frame[1][1] = szBuff[0]; 

工作正常。

1

您正在閱讀數組邊界之外的可能性更大。通過它進行調試,並確保我和j不會在您聲明的數組邊界之外遞增。確認:

我< 4和I> = 0
Ĵ< 8且j> = 0

2

有幾種方式來完成什麼(我相信)你正在嘗試做的。這裏有三個:

#include <cstring> 
using std::memcpy; 
using std::memset; 

#include <algorithm> 
using std::fill; 

int main() { 
    char frame[4][8]; 
    char szBuff[8] = ""; 

    // Method 1 
    for(int i = 0; i < 4; ++i) { 
    for(int j = 0; j < 8; ++j) { 
     frame[i][j] = szBuff[0]; 
    } 
    } 

    // Method 2 
    memset(&frame[0][0], szBuff[0], sizeof frame); 

    // Method 3 
    // EDIT: Fix end iterator 
    fill(&frame[0][0], &frame[3][7]+1, szBuff[0]); 
} 
相關問題