2015-11-14 2 views
0

Мне нужен массив из 13 строк с 4 столбцами, и я хочу, чтобы первая строка имела символы «C», «D», «H» и «S», но это не то, что я получаю. Вот мой код:Как инициализировать первую строку в 2D-массиве?

#include <stdio.h> 

int main(void) 
{ 
    char a[13][4] = {"C", "D", "H", "S"}; 
    int i, j, k; 

    for (i = 0; i < 13; i++) 
    { 
     for (j = 0; j < 4; j++) 
     { 
      printf("%c ", a[i][j]); 
     } 
     printf("\n"); 
    } 

    return 0; 
} 

Это то, что он выводит:

C 
D 
H 
S 

Когда это должно быть

C D H S 

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

+0

Персонажи '' A''. '" A "- это строка. – Haris

+0

'char a [13] [4] = {{'C', 'D', 'H', 'S'},};' это также инициализирует все остальные элементы '0'. –

ответ

0

Декларация

char a[13][4] = {"C", "D", "H", "S"}; 

инициализирует первые четыре строки массива a с четырьмя струнами "C", "D", "H" и "S". Если вы хотите инициализировать только первую строку с символами 'C', 'D', 'H' и 's', то он должен быть как

char a[13][4] = {{'C', 'D', 'H', 'S'}}; 

Другие элементы массива инициализируется '\0' характер.

0

Вам нужно использовать символьные константы, а не строковые константы. Измените двойные кавычки на одинарные:

char a[13][4] = {'C', 'D', 'H', 'S'}; 
+0

Правильно, хотя похоже, что они отображаются как отдельные символы в образце кода. –

Смежные вопросы