gpt4 book ai didi

c - 在 C 中将 struct char 数组分配给 char 数组会出现 "incompatible types in assignment"错误

转载 作者:太空宇宙 更新时间:2023-11-04 07:24:01 24 4
gpt4 key购买 nike

我试图将大小为 88 的字符数组分配给结构的大小为 88 的字符数组属性,但是当我编译程序时,我得到:

error: incompatible types in assignment

这里是我定义结构的地方:

#define BUFFERSIZE 9
/* Bounded Buffer item structure */
typedef struct item {
int id; /* String index value */
char str[88]; /* String value */
}item;

我将项目声明为全局变量:

item buffer[BUFFERSIZE];
int bufferFill;

我在另一个文件中设置属性,所以我也在另一个文件中使用 extern 声明它们:

extern item buffer[BUFFERSIZE];
extern int bufferFill;

在我将它们重新声明为外部全局变量的同一文件中的函数内部,我声明了一个新的 char 数组:

char outputString[88];

我最初是这样的:

char * outputString; 

这给出了我仍然遇到的相同错误,所以我尝试更改它,以便声明数组的大小与结构中的数组相同。

用数据填充 outputStrings 后,我尝试将缓冲区的 str 数组设置为 outputStrings。

buffer[bufferFill].str = outputString;

这给出了错误:

incompatible types in assignment during compile time.

我不知道哪里出了问题。我以前甚至做过类似的事情,没有任何问题,所以我不明白我做错了什么。我已经设置了项目结构的其他属性,没有这样的问题:

buffer[bufferFill].id = num;  // This gives no error

在设置 str 属性时我也尝试过:

buffer[bufferFill].str = (char *)outputString;

buffer[bufferFill].str = &outputString;

我没想到它们会起作用,但我还是尝试了它们。他们当然没有工作。

我完全不知道是什么原因造成的,据我所知,它们是同一类型。

最佳答案

要复制字符串,使用:-

strncpy(buffer[bufferFill].str,outputString,88); //88 is the size of char str[88] array.

关于c - 在 C 中将 struct char 数组分配给 char 数组会出现 "incompatible types in assignment"错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19627022/

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