如何在没有空终止符的情况下初始化 char 数组?

2023-11-24

char 数组是网络消息的一部分,其长度定义明确,因此不需要空终止符。

struct Cmd {
    char cmd[4];
    int arg;
}

struct Cmd cmd { "ABCD" , 0 }; // this would be buffer overflow

如何初始化这个 cmd 成员字符数组?不使用类似的函数strncpy?


如果终止空字符的大小被忽略char数组与初始值设定项中的字符数相同。所以cmd不会有空终止符。

C11 标准 (n1570) 中的相关部分是6.7.9/14:

字符类型数组可以由字符串文字或 UTF-8 字符串文字初始化,可以选择用大括号括起来。字符串文字的连续字节 (包括终止空字符如果有空间或者如果数组大小未知)初始化数组的元素。

以及声明:

struct Cmd cmd { "ABCD" , 0 };

应该:

struct Cmd cmd  = { "ABCD" , 0 };
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在没有空终止符的情况下初始化 char 数组? 的相关文章

随机推荐