Ошибка при попытке перебрать и распечатать через int **, который находится в структуре - PullRequest
0 голосов
/ 05 декабря 2018

Ошибка, полученная при попытке печати:

threads: wcsrtombs.c: 94: __wcsrtombs: утверждение `data .__ outbuf [-1] == '\ 0' 'не удалось.

Прервано (ядро сброшено)

token = strtok(dup, delim);

while( token != NULL ){
  if( game->size >= game->capacity ){
    game->layout = (int**)realloc(game->layout, game->capacity*2 * sizeof(int*));
    game->capacity = game->capacity * 2;
  }

  game->layout[game->size] = (int*)token;
  game->size = game->size + 1;
  token = strtok(NULL, delim);
}

Как int * вводится в int ** в структуре, называемой game.

for( size_t i = 0; i < game->size; i++ ){
  printf("%ls ", game->layout[i]);
  if(i == 0)
    continue;
  else if( (i+1) % 10 == 0 )
    printf("\n");
}

Я изменилпечатать немного к этому коду ниже.Теперь я получаю вывод и без ошибок, но вывод все равно не тот.Я думаю, что это возможно печать памяти.

for( size_t i = 0; i < thisgame->size; i++ ){
  printf("%d ", *thisgame->layout[i]);
  if(i == 0)
    continue;
  else if( (i+1) % 10 == 0 )
    printf("\n");
}

Мой вывод:

3276850 3276850 3276850 3276850 3276850 3276850 3276850 3276850 3276850 50 3276850 3538994 3538998 3604534 3604535 3604535 3473463 3473461 3276853 50 3273604530 3604535 3604535 3276855 3276850 925958194 822097713 822097713 838874929 50 3276850 3276850 3276850 3276850 3276850 3276850 3276850 3276850 3276850 50 3670072 3670072 3539000 3538998 3538998 3735606 3735609 3735609 3276857 50 3276850 3276850 3276850 3276850 3276850 3276850 3276850 3276850 3276850 50 822095921 822095921 872427569 3407924 3735604 3735609 3735609 3276857 50 32768503276850 3276850 3276850 3276850 3276850 3276850 3276850 3276850 3342387 3342387 50 3538995 3538998 3538998 3735606 3735609 3735609 3276857 3342387 3342387 50 3538995 3538998 3538998 3735606 3735609 3735609 3276857 3276850 3276850 50 3276850 3276850 3276850 3276850 3276850 3276850 3276850 50

...