如何将char复制到char数组

时间:2011-05-19 16:56:25

标签: c++ copy char

我有:

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

我想做这样的事情:

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

但它不起作用:

Access violation reading location 0xcccccccc.

3 个答案:

答案 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];

工作正常。