繁体   English   中英

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

[英]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 语法中有没有办法以更简单的方式缩写它?


我知道有类似的问题如何将数组的所有成员初始化为相同的值? 但那里的答案集中在如何用int值初始化一维int数组,而不是用字符串初始化二维char数组。

您链接问题答案之一显示了我所知道的缩短初始化的唯一(特定于编译器的)方法:

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

这是在指定初始值设定项下记录的 GCC 扩展。

请注意, ...符号之前的空格是强制性的; 否则,您有一个浮点文字0. (由于“最大咀嚼”规则)它不能用作下标。 之后的空间是对称的,尽管不是绝对必要的。 (我很惊讶,他们没有选择像一个冒号:分隔的数字-有会是作为唯一的其他点没有混乱的危险,冒号出现的标签后或三元?:运营商,这显然是在这里不相关。我也很失望这样的事情没有添加到 C99 或更高版本中作为指定初始化程序功能的一部分。毕竟,Fortran 66(又名 Fortran IV)有一种重复“初始化程序”的机制!)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM