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(使用前将#替换为@)