我有一个包含字符串(字符指针)的结构。
此字符串/数组应采用以下形式之一:
STATE_1
STATE_2
我希望能够检查一下'字符串'在STATE_1
或STATE_2
中,并且与包含实际数据的内容有所不同。如果我只有一个状态,我可以使用空指针。
我尝试了类似的东西,但它会导致未定义的行为。
char *STATE_1, *STATE_2;
...
if(tstruct.string == STATE_1 || tstruct.string == STATE_2){
...
}
答案 0 :(得分:4)
保留两个静态地址。它们保证是独一无二的。
static char STATE_1[1];
static char STATE_2[1];
if (tstruct.string == STATE_1 || tstruct.string == STATE_2) {
...
}
这些可能是全局变量,也可能是静态本地变量。
答案 1 :(得分:2)
我不确定,但我想你想要这样的东西:
char STATE_1, STATE_2; // dummy 'char's for 2. and 3.
if (tstruct.string == &STATE_1 || tstruct.string == &STATE_2) {
// ...
}
答案 2 :(得分:0)
有多种方法可以做到这一点:
1)你可以在结构中有一个类型的变量 enum stringState,可以是0,1或2(0表示String有数据,1表示State-1,2表示State-2)。缺点是每次更改数据时都必须修改stringState,如果忘记这样做,就会产生后果。
2)字符串本身可以具有值“STATE1”或“STATE2”,然后您可以使用“STATE1”或“STATE2”执行strcmp,否则它将具有实际数据(STATE0)。