将struct char数组赋值给C中的char数组会给出“赋值不兼容的类型”错误

时间:2013-10-28 04:02:35

标签: c arrays struct char

我正在尝试将大小为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; 

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

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

buffer[bufferFill].str = outputString;

这给出了错误:

  

编译期间分配的不兼容类型。

我不知道出了什么问题。我之前甚至做过类似的事情没有问题,所以我不明白我做错了什么。我已经设置了item struct的其他属性,没有这样的问题:

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

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

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

buffer[bufferFill].str = &outputString;

我没想到那些会起作用,但无论如何我都试过了。他们当然没有用。

据我所知,我完全迷失了可能造成这种情况的原因,它们属于同一类型。

2 个答案:

答案 0 :(得分:2)

要复制字符串,请使用: -

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

答案 1 :(得分:1)

使用strcpy()或strncpy()复制字符串(char数组)。