C语言 结构rest *r_list表达式必须是可修改的左值

6l7fqoea  于 2023-03-28  发布在  其他
关注(0)|答案(1)|浏览(117)

我正在做一个恢复管理程序。我想删除一个动态分配给detail_an_item()的指针数组中对应于rlist[index - 1]的值,但我得到了这个错误。我如何修复这个错误?

struct rest {
    char food[TSIZE]; // case : Aglio e Olio
    char kind; // case : R
    int price; // case : 14000
};

void delete_an_item(struct rest *r_list, size_t *ptr_r_items){
// input_int() Defined and declared.
index = input_int(); // ex. index = 6 The actual [] number is 5.
    if ((index >= 0 && index < *ptr_r_items) && index == 1){
        r_list[index - 1].food = NULL; // error here
        r_list[index - 1].kind = '\0';
        r_list[index - 1].price = 0;

我不知道怎么解决这个错误。告诉我怎么做。

jtoj6r0c

jtoj6r0c1#

  1. index未在此函数中定义/
    1.您不能将其赋值给数组。
    1.我不理解index - 1,但它可能会将基于1的索引转换为C索引(从0开始)
  2. (index >= 0 && index < *ptr_r_items) && index == 1)将计算为true只有当index == 1
struct rest {
    char food[TSIZE];
    char kind;
    int price;
};

void delete_an_item(struct rest *r_list, size_t *ptr_r_items)
{
    size_t index = input_int();
    if ((index >= 0 && index < *ptr_r_items) && index == 1){
        r_list[index - 1].food[0] = 0;  //food is now an empty string
        r_list[index - 1].kind = '\0';
        r_list[index - 1].price = 0;
    }
}

相关问题