出于某种原因,每当我尝试将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]
我该怎么做才能解决这个问题?
答案 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()
不安全。