我有:
char frame[4][8];
char szBuff[8] = "";
我想做这样的事情:
frame[i][j] = szBuff[0];
但它不起作用:
Access violation reading location 0xcccccccc.
答案 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]);
}
答案 1 :(得分:1)
您正在超出阵列界限的范围内阅读。通过它进行调试,并确保i和j不会超出您声明的数组的范围。确保:
我&lt; 4和i> = 0
j&lt; 8和j> = 0
答案 2 :(得分: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];
工作正常。