将C字符串的值设置为字符串文字

时间:2013-04-09 19:50:54

标签: c string

出于某种原因,每当我尝试将C字符串的值设置为字符串文字时,我都会收到编译器错误:

#include <stdio.h>

int main(void) {
    char hi[] = "Now I'm initializing a string.";
    hi = "This line doesn't work!"; //this is the line that produced the compiler error
    return 0;
}

此外,这些是编译器错误:

prog.c: In function ‘main’:
prog.c:5:8: error: incompatible types when assigning to type ‘char[31]’ from type ‘char *’
prog.c:4:10: warning: variable ‘hi’ set but not used [-Wunused-but-set-variable]

我该怎么做才能解决这个问题?

3 个答案:

答案 0 :(得分:3)

复制字符串的方法是strcpy()函数:

strcpy(hi, "This line should work");

注意:这并不会检查目标中是否有足够的空间来容纳字符串。 (不,strncpy()可能是not the solution

C不允许分配数组。

推荐阅读:comp.lang.c FAQ的第6部分。

答案 1 :(得分:0)

好的,这里发生的是这个,

当你写

hi = "something here";

发生的事情是,在内存中,存储字符串“something here”,并返回指向存储字符串的内存中第一个元素的指针。

因此,它期望左值是指向char的指针,而不是char本身的数组。

所以,你必须声明为char* hi

答案 2 :(得分:0)

试试这个:

char hi[100];
strlcpy(hi, "something here", sizeof(hi));

您应该使用strlcpy(),因为strcpy()strncpy()不安全。

请参阅:strncpy or strlcpy in my case