我正在输入字符串数组,每个数组都有一个表达式。我想在考虑所有条件运算符的情况下拆分表达式。 我的表达可能像str [0],str [1],str [2]
FIC >= 1 && PIC == 1
FCV<=0.2 && FCC>=12
现在我必须将第一个字符串拆分为'FIC&gt; = 1''PIC == 1'
我可以使用strtok (str[0],"&&");
我再次将'FIC&gt; = 1'分为字符串'FIC'和'&gt; ='和'1'。 然后我在我的应用程序中有单独的函数来获取'FIC'的值,我将检查这个条件是否为真。如果是,那么我必须采取一些行动。
但是这个表达方式不一样,有些表达式有更多&amp;&amp;运算符和更多条件运算符。我怎么能分开这个
答案 0 :(得分:1)
如果您知道分隔符字符串,则可以使用库函数strstr
。
const char * str1 = "FIC >= 1 && PIC == 1";
const char * sep = "&&";
char *p = NULL, *q = NULL, *r = NULL;
int len = 0;
p = strstr(str1, sep);
len = p - str1;
q = calloc(len + 1, sizeof(char));
strncpy(q, str1, len);
len = strlen(str1) - len - strlen(sep);
r = calloc(len + 1, sizeof(char));
p += strlen(sep);
strcpy(r, p);
现在q
和r
指向包含输入字符串两部分的缓冲区。请注意,如果在str1中找不到sep,strstr
将返回NULL,因此如果您不能保证sep在字符串中,请在继续之前检查NULL。