2014-11-17 4 views
0

Я пытаюсь создать случайный двумерный массив, как доска для игры. До сих пор я это сделал.Случайный двумерный массив в C

#include <stdio.h> 
#include <stdlib.h> 
#include <time.h> 
#include <string.h> 


int main(void) 
{ 
    char test[5]= 
    { 
     '.', 'C', 'm', 's', 'e', 
    }; 
    int i, j, r; 
    char tab[10][10]; 
    srand(time(NULL)); 
    for (i=1; i <= 5; i++) 
    { 
     for (j=1; j <= 5; j++) 
     { 
      r = rand() %5; 
      tab[i][j] = test[r]; 
     } 
    } 
    printf("%c ",tab[i][j]); 
    return 0; 
} 

но когда я пытаюсь запустить это, единственное, что я получаю в консоли, это «V». Спасибо.

+3

Возможно, это опечатка, но вы ссылаетесь на переменную: 'teste', но объявленная переменная называется' test' –

+1

'printf ("% c ", tab [i] [j]);' перемещаться внутри цикла. – BLUEPIXY

+0

Комментарий BLUEPIXY также является ответом, так как вы ссылаетесь на 'tab [i] [j]' после цикла, где i больше 5 и j то же самое. Это место, которое не инициализировано. –

ответ

-1

У вас есть Printf вне цикла, поэтому его печать только последняя запись. Так принести в вашем Printf в петлю, как показано ниже:

for (i=1; i <= 5; i++) 
{ 
    for (j=1; j <= 5; j++) 
    { 
     r = rand() %5; 
     tab[i-1][j-1] = teste[r]; 
     printf("%c ",tab[i-1][j-1]); 
    } 
} 

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

+1

Это не последняя запись. Посмотрите на ответ @unwind. OP вызывает UB. –

+3

Лучше написать для циклов, например 'for (i = 0; i <5; i ++)', чтобы вы могли использовать счет непосредственно как индекс (без шума '-1'). Это гораздо более нормальное соглашение. – AAT

+2

Ваше исправление итерации массива является одним из худших. Почему бы не повторить от 0, как обычные люди? Почти каждый i-1 является первым шагом к ошибке. – zoska

0

Вы должны изменить, как следовать

for (i=1; i <= 5; i++) 
{ 
    for (j=1; j <= 5; j++) 
    { 
     r = rand() %5; 
     tab[i][j] = test[r]; 
     printf("%c ",tab[i][j]); 
    } 
}