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