首页 > 解决方案 > C - 比较结构和字符串的变量时出错

问题描述

我正在尝试实现一个比较两个字符串的函数。但是,即使我使用 char 指针而不是 char 数组,我也会在函数 strcmp 中得到“表达式必须是可修改的左值”。我的代码如下。

typedef enum { false, true } boolean;

struct threeGram *threeGram_array;

struct threeGram
{
    const char *value;
    int occurence;
};

boolean containsValue(struct threeGram array[], const char *string){

    int i;
    for(i = 0; i < sizeof (array) / sizeof (struct threeGram); i++){
        if(strcmp(array[i].value, string) = 0){
            return true;
        }
    }
    return false;
}

标签: c

解决方案


在检查相等时,C您应该使用双等号==,否则这将被解释为赋值。因此在这条线上:

if(strcmp(array[i].value, string) = 0){

您尝试将结果分配给函数返回值,该值是不可修改的左值。


推荐阅读