struct rest *r_list 表达式必须是可修改的左值

问题描述 投票:0回答:1

我正在制作一个恢复管理程序。我想删除动态分配给 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();
    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;

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

c dynamic-memory-allocation
1个回答
1
投票
  1. index
    未在此函数中定义/
  2. 你不能分配给数组。
  3. 我不明白
    index - 1
    但可能它将基于 1 的索引转换为 C 索引(从 0 开始)
  4. (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;
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.