struct Cmd {
char cmd[4];
int arg;
}
struct Cmd cmd { "ABCD" , 0 }; // this would be buffer overflow
如何初始化这个cmd成员的字符数组?而不使用类似于strncpy
的函数?
struct Cmd {
char cmd[4];
int arg;
}
struct Cmd cmd { "ABCD" , 0 }; // this would be buffer overflow
如何初始化这个cmd成员的字符数组?而不使用类似于strncpy
的函数?
struct Cmd cmd { "ABCD" , 0 };
should be:
struct Cmd cmd = { "ABCD" , 0 };
char cv [4] =“ asdf”;//错误
不正确,因为没有为隐含的结尾字符'\0'腾出空间。 ——结束示例] - Jonathan Leffler
=
之外,给定的初始化是可以的。 - Jens Gustedt{'A','B','C','D'}
初始化器因此是一个好的实践:它是自我记录代码,显示程序员意识到缺乏空终止符,但它也允许编译器/静态分析器在代码的其他地方发出警告,当字符串文字初始化器导致未以空终止符结尾的字符串时。 - Lundin