繁体   English   中英

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

[英]How to initialize a char array without the null terminator?

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

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

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

如何初始化此cmd成员char数组? 不使用像strncpy这样的函数?

如果char数组的大小与初始化程序中的字符数相同,则忽略终止空字符。 所以cmd不会有null终止符。

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

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

声明:

struct Cmd cmd { "ABCD" , 0 };

应该:

struct Cmd cmd  = { "ABCD" , 0 };

暂无
暂无

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

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