gpt4 book ai didi

c - 错误 : incompatible types when assigning to type ‘char[25]’ from type ‘char *’

转载 作者:太空宇宙 更新时间:2023-11-04 00:13:27 28 4
gpt4 key购买 nike

我正在尝试将结构的值分配给映射,但编译后出现以下错误消息:

error: incompatible types when assigning to type ‘char[25]’ from type ‘char *’ 

map[i].n=m.n

我的结构是这样定义的:

struct m1{
int c;
char n[25];
int q_m;
int q;};

我的部分代码:

    struct m1 m;
struct m1 *map = 0;
scanf("%d",&m.c);
scanf("%s",&m.n);
scanf("%d",&m.q_m);
scanf("%d",&m.q);

map[i].c=m.c;
map[i].n=m.n;
map[i].q_m=m.q_m;
map[i].q=m.q;

最佳答案

数组表达式可能不是赋值的目标; = 运算符未定义为将一个数组的内容 复制到另一个数组。

如果 n 是为了保存一个以 0 结尾的字符串,使用 strcpy:

strcpy( map[i].n, m.n );

如果 n 用于保存非 0 终止的字符串(或嵌入 0 值的字符序列),请使用 memcpy:

memcpy( map[i].n, m.n, sizeof map[i].n );

除非它是 sizeof 或一元 & 运算符的操作数,或者是用于在声明中初始化另一个数组的字符串文字,否则类型为 "的表达式T 的 N 元素数组”将被转换(“衰减”)为“指向 T 的指针”类型的表达式,表达式的值将是地址的第一个元素。

这就是您收到错误消息的原因;表达式 m.n 的类型为“char 的 25 元素数组”;因为它不是 sizeof 或一元 & 运算符的操作数,所以它被转换为 char * 类型。 map[i].n 没有被转换(它保持 char [25] 类型),但正如我之前所说,数组表达式可能不是赋值的目标运算符(operator)。

关于c - 错误 : incompatible types when assigning to type ‘char[25]’ from type ‘char *’ ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27707689/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com