的數組我有:如何字符複製到字符
char frame[4][8];
char szBuff[8] = "";
,我希望做這樣的事情:
frame[i][j] = szBuff[0];
,但它不工作:
Access violation reading location 0xcccccccc.
的數組我有:如何字符複製到字符
char frame[4][8];
char szBuff[8] = "";
,我希望做這樣的事情:
frame[i][j] = szBuff[0];
,但它不工作:
Access violation reading location 0xcccccccc.
確保你的i和j沒有出陣...
例如:
i = 5;
j = 7;
frame[i][j] = szBuff[0];
不行;
此代碼:
char frame[4][8];
char szBuff[8] = "1";
frame[1][1] = szBuff[0];
工作正常。
您正在閱讀數組邊界之外的可能性更大。通過它進行調試,並確保我和j不會在您聲明的數組邊界之外遞增。確認:
我< 4和I> = 0
Ĵ< 8且j> = 0
有幾種方式來完成什麼(我相信)你正在嘗試做的。這裏有三個:
#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]);
}
你將需要發佈整個循環(與i和j遞增)或無論哪個代碼寫入它。你剛剛粘貼的代碼中沒有任何固有的錯誤。 – yan 2011-05-19 17:04:21