出于某种原因,即使令牌实际上等于长度为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;
}
}
答案 0 :(得分:0)
问题似乎不清楚。你问为什么它在每种情况下都返回0,但你没有在每个条件路径中都有一个return语句。更重要的是要注意是否正确设置了相应的“约束”成员。当然,您无法从函数外部分辨出这一点,因为您按值获取了Section对象。因此,s是你所谓的storeDay的副本,你没有看到原始对象的变化。