【发布时间】:2018-01-02 10:06:42
【问题描述】:
我知道 C 的(非常简洁的)数组初始化语法,比如
char arr[12] = {[0] = '\n', [4] = 'z'};
初始化数组中的一些特定成员,但是有没有办法用字符串初始化整个数组块?像这样:
char filename[12] = {[0..9] = "data/img/"};
是否有允许它的内置语法?还是我必须坚持 memcpy():
char filename[strlen(basename) + 14];
memcpy(filename, "data/img/", 9);
memcpy(filename + 9, basename, l);
memcpy(filename + 9 + l, ".bmp", 4);
filename[l + 13] = '\0';
是我目前拥有的; filename 是涉案字符数组,basename 是可变字符串。
【问题讨论】:
-
我认为如果您询问例如问题可能会变得更清楚。
[3..9],来自[0]的切片不太有趣。或者它们是你真正要问的? -
是的,我想要一个以常量字符开头的字符串,然后附加其他(变量)字符
-
然后edit你的问题是模棱两可的,有人已经部分回答了。
-
顺便说一句,我正在使用 VLA。这可能会使事情复杂化(Antti Haapala 的解决方案不起作用)
-
"我正在使用 VLA" 你真的应该在你的问题中提到这一点。特别是因为您给出的第一个示例不适用于 VLA!
标签: c initialization slice array-initialization