错误C2106:&x27=';:左操作数必须是C中的l值
我正在编写一个代码,其中必须向抽象数据表添加一个值,但我不确定为什么不能,因为它显示了“error C2106:'='':左操作数必须是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
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
receivepair
,而不是将两者分开。然后可以分配不能分配给数组的结构。您必须使用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]