我正在尝试将大小为 88 的 char 数组分配给大小为 88 属性的结构的 char 数组,但是当我编译程序时,我得到:
错误:赋值中的类型不兼容
这是我定义结构的地方:
#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;
这给了我仍然得到的相同错误,所以我尝试更改它,以便声明数组的大小与结构中的数组相同。
用数据填充输出字符串后,我尝试将缓冲区的 str 数组设置为 outputStrings。
buffer[bufferFill].str = outputString;
这给出了错误:
编译时赋值中的不兼容类型。
我不知道出了什么问题。我以前甚至做过类似的事情,没有问题,所以我不明白我做错了什么。我已经设置了项目结构的另一个属性,没有这样的问题:
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.
使用 strcpy() 或 strncpy() 复制字符串(即字符数组)。