为什么==运算符不能与char数组一起工作?

时间:2014-03-06 04:36:27

标签: c++ arrays char

出于某种原因,即使令牌实际上等于长度为1的任何指定字符 - “M”,“T”,“W”,“R”,这段代码仍会返回0。有什么想法吗?

int storeDay(char *token, struct Section s)
{
    int length = strlen(token);
    cout << "length of token: " << *token << " " << length << endl;

    if(length == 2)
    {
         if(token[0] == 'M' && token[1] == 'W')
         {
            s.constraints.days[0] = 1;
            s.constraints.days[2] = 1;
         }   
         else if(token[0] == 'T' && token[1] == 'R')
         {
            s.constraints.days[1] = 1;
            s.constraints.days[3] = 1;
         }
         else
             return 0;
    }
    else if(length == 1)
    {
         if(*token == 'M')
            s.constraints.days[0] = 1;
         else if(*token == 'T')
            s.constraints.days[1] = 1;
         else if(*token == 'W')
            s.constraints.days[2] = 1;
         else if(*token == 'R')
            s.constraints.days[3] = 1;
         else
            return 0;
    }
}

1 个答案:

答案 0 :(得分:0)

问题似乎不清楚。你问为什么它在每种情况下都返回0,但你没有在每个条件路径中都有一个return语句。更重要的是要注意是否正确设置了相应的“约束”成员。当然,您无法从函数外部分辨出这一点,因为您按值获取了Section对象。因此,s是你所谓的storeDay的副本,你没有看到原始对象的变化。