如何初始化二维数组中的第一行?

How do I initialize the first row in a 2D array?

我想要一个包含 4 列的 13 行数组,我希望第一行包含字符 "C"、"D"、"H" 和 "S",但是那不是我得到的。这是我的代码:

#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

我已经尝试使用谷歌搜索教程来了解如何初始化多维数组,我认为我做的是对的,但我一定是做错了什么,出于某种原因我看不到。

您需要使用字符常量而不是字符串常量。将双引号改为单引号:

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

宣言

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

用四个字符串 "C", "D", "H""S" 初始化数组 a 的前四行。如果你只想用字符 'C', 'D', 'H''s' 初始化第一行,那么它应该像

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

数组的其他元素将被初始化为'[=17=]'个字符。