我有以下结构,
struct example_struct {
int number ;
char word[100]
}
我在我的代码中将其初始化为常量结构
const struct example_struct example {
.number = 5
} ;
strcpy(example.word, "some_string") ;
在我尝试编译代码时给出了警告:
"警告:传递'strcpy'的参数1从指针目标类型中删除'const'限定符#34;
我意识到当我将它作为const结构时,我不应该尝试分配结构的值,但我也不能将stringcpy放在结构中。有什么办法可以在c?
中将字符串赋值给const结构的元素答案 0 :(得分:6)
警告是正确的 - 因为您声明了struct with
const`限定符,在运行时将数据复制到其中是未定义的行为。
您可以删除限定符,也可以像这样初始化struct
:
const struct example_struct example = {
.number = 5
, .word = "some_string"
};
这会将"some_string"
中以空值终止的字符序列放入word[100]
数组的初始部分,并用'\0'
个字符填充其余部分。