将字符串分配给常量结构

Jus*_*tin 3 c string struct

我有以下结构,

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结构的元素吗?

das*_*ght 6

警告是正确的 - 因为您声明了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'字符填充其余部分.