如何将一组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'!)
我想用一个默认字符串 "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'!)