【发布时间】:2011-03-10 18:26:12
【问题描述】:
我在下面的代码中初始化结构时遇到了困难。这甚至可以完成,还是我真的需要将 5 个字符的字符串 memcpy (urg) 到结构中?
struct MyStruct
{
char x[5];
};
main(...)
{
const char* MyString = {"mnopq"}; // I understand this is a non-NULL terminated string -
// it's OK, I just want five character fields in an array
struct MyStruct = {MyString}; // <---This gives warnings below
}
警告:初始化器周围缺少大括号
警告:初始化从没有强制转换的指针生成整数
如果我像这样包装初始化程序:
struct MyStruct = {{MyString}};
第一个警告消失了。第二个警告没有。因此,该结构未按预期初始化。
提前感谢您的帮助。
【问题讨论】:
-
糟糕...这是 const char* MyString = "mnopq"; (没有大括号)
-
@user654077:抱歉,您的问题和您的 cmets 相互矛盾。如果它应该是
const char* MyString = "mnopq",那么它是一个以null结尾的字符串。然而,在代码 cmets 中,您说它不是。 ???决定你想要什么并编辑你的问题。这个时候就乱七八糟了。
标签: c struct initialization