错误C2106:&x27=';:左操作数必须是C中的l值

错误C2106:&x27=';:左操作数必须是C中的l值,c,C,我正在编写一个代码,其中必须向抽象数据表添加一个值,但我不确定为什么不能,因为它显示了“error C2106:'='':左操作数必须是l值”错误 我在网上做了一些搜索,但找不到适合我的相对解决方案 如果你能给我一点提示,我将不胜感激 更新: typedef struct { char index[257]; char other[257]; } pair; typedef struct { pair *item; int item_count; in

我正在编写一个代码,其中必须向抽象数据表添加一个值,但我不确定为什么不能,因为它显示了“error C2106:'='':左操作数必须是l值”错误

我在网上做了一些搜索,但找不到适合我的相对解决方案

如果你能给我一点提示,我将不胜感激

更新:

typedef struct {
    char index[257];
    char other[257];
} pair;


typedef struct {
    pair *item;
    int item_count;
    int size;
} top_string;

int top_init(top_string *table, const int size) {

    table->item = malloc((size+1)*sizeof(top_string));
    table->size = size;
    table->item_count = 0;

    if (table->item == NULL) {
        return 0; /* failed to allocate memory */
    } else {
        return 1;
    }

}

字段
索引
其他
是数组,不能分配数组。您必须使用
memcpy
复制它们


另一个选项是让
top\u add
receive
pair
,而不是将两者分开。然后可以分配不能分配给数组的
结构。您必须使用strncpy、memcpy或类似的方法复制到它们中。

除了分配数组的问题外,还需要取消对指针表->项的引用。子索引[表->项目计数]必须在.index之后

((table->item)->index)[table->item_count]

这是一个l值

发布top\u Strings的定义请告诉我们什么是
表->项目[表->项目计数]。索引和
表->项目[表->项目计数]。其他实际上是。如何声明
表->项目[表->项目计数]。索引?如果它也是一个数组,那么可以将其分配给,您必须通过一些函数(如
memcpy
)复制数据。
table->item[table->item\u count]也是如此。其他的也一样。当有疑问时,你应该尝试创建一个最小的测试用例,看看你所做的是否有意义。在您的例子中,这类似于
void f(const char a[10]){char b[10];b=a;}
。这会使问题变得不那么吵闹,也会让你对问题所在有一个更狭隘的认识。
((table->item)->index)[table->item_count]