如何将一组char数组的所有成员初始化为一个默认字符串?

How to initialize all members of an array of char arrays to one default string?

我想用一个默认字符串 "default".

初始化一组 char 个数组的所有成员

到目前为止我所拥有的是:

char a[10][8];

for(int i = 0; i < 10; i++)
{ 
    strcpy(&a[i][0],"default"); 
}

或者:

char a[10][8] = { 
                  {"default"}, {"default"}, {"default"}, {"default"}, {"default"}, 
                  {"default"}, {"default"}, {"default"}, {"default"}, {"default"}
                };

在 C 语法中有没有办法以更简单的方式缩写它?


我知道有类似的问题 How to initialize all members of an array to the same value? 但那里的答案集中在如何用 int 值初始化一维 int 数组,而不是二维数组char 带字符串的数组。

其中一个 answers to your linked question 显示了我所知道的唯一(特定于编译器的)缩短初始化的方法:

char a[10][8] = { [0 ... 9] = {"default"} };

这是 designated initializers 下记录的 GCC 扩展。

注意...符号前的space是必须的;否则,您有一个不能用作下标的浮点文字 0.(由于 'maximal munch' 规则)。之后的 space 是对称的,但不是绝对必要的。 (我很惊讶他们没有选择冒号 : 之类的东西来分隔数字——不会有混淆的危险,因为冒号出现的唯一其他点是在标签之后或三元 ?: 运算符,这在这里显然不相关。我也很失望,像这样的东西没有添加到 C99 — 或更高版本 — 作为指定初始化程序功能的一部分。毕竟,Fortran 66(又名 Fortran IV)有一个机制重复 'initializers'!)