Как скопировать символ в массив символов - PullRequest
1 голос
/ 19 мая 2011

У меня есть:

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

, и я хочу сделать что-то вроде этого:

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

, но это не работает:

Access violation reading location 0xcccccccc.

Ответы [ 3 ]

2 голосов
/ 19 мая 2011

Есть несколько способов достичь того, что (я полагаю) вы пытаетесь сделать. Вот три:

#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 голос
/ 19 мая 2011

Вы читаете за пределами вашего массива более чем вероятно. Выполните отладку и убедитесь, что i и j не увеличиваются за пределы объявленного вами массива. Убедитесь:

i <4 и i> = 0
j <8 и j> = 0

0 голосов
/ 19 мая 2011

Убедитесь, что ваши i и j не вне массива ...

Пример:

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

не будет работать;

Этот код:

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

Работает нормально.

...