提问人:Lev Zagatov 提问时间:11/6/2023 更新时间:11/6/2023 访问量:79
在 C 中使用字符串初始化结构时,“从'char *'初始化'char' makes integer from pointer without a cast” [duplicate]
"initialization of ‘char’ from ‘char *’ makes integer from pointer without a cast" when initializing a struct with string in C [duplicate]
问:
我有一个包含字符串值的结构:
struct Demo {
char str[256];
};
当我尝试初始化结构时,如下所示:
char str[256] = "asdasdasd";
struct Demo demo = {str};
// print to check what's in there
puts(demo.str);
我收到警告:
warning: initialization of ‘char’ from ‘char *’ makes integer from pointer without a cast [-Wint-conversion]
8 | struct Demo demo = {str};
| ^~~
.\Untitled-1.c:8:29: note: (near initialization for ‘demo.str[0]’)
为什么当结构需要包含字符串时,字符会初始化?demo.str[0]
答:
2赞
Ada
11/6/2023
#1
在 C 语言中,当您在表达式中使用数组名称时,它会“衰减”为指向其第一个元素的指针,因此您不能直接使用另一个数组初始化数组。您可以使用该函数将数组中的字符复制到:strcpy
str
demo.str
#include <stdio.h>
#include <string.h>
struct Demo {
char str[256];
};
int main() {
char str[256] = "asdasdasd";
struct Demo demo;
strcpy(demo.str, str);
puts(demo.str);
return 0;
}
评论
2赞
nielsen
11/6/2023
另一种选择是直接使用字符串文字对其进行初始化,即 .struct Demo demo = {"asdasdasd"};
评论
strcpy