0

出于某种原因,每当我尝试将 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]

我能做些什么来解决这个问题?

4

3 回答 3

3

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

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

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

C 不允许分配数组。

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

于 2013-04-09T19:57:35.937 回答
0

尝试这个:

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

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

请参阅:strncpy 或 strlcpy 在我的情况下

于 2013-04-09T19:58:01.353 回答
0

好的,这里发生的事情是这样的,

当你写

hi = "something here";

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

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

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

于 2013-04-09T19:53:58.697 回答