我正在输入字符串数组,每个数组都有一个表达式。我想在考虑所有条件运算符的情况下拆分表达式。 我的表达式可能像 str[0] , str[1], str[2]
FIC >= 1 && PIC == 1
FCV<=0.2 && FCC>=12
现在我必须将第一个字符串拆分为 'FIC >=1' ' PIC ==1'
我可以通过使用 strtok (str[0],"&&");
我再次将 'FIC >= 1' 拆分为字符串 'FIC' 和 '>=' 和 '1' 。 然后我在我的应用程序中有单独的函数来获取“FIC”的值,我将检查这个条件是否为真。如果是,那么我必须执行一些操作。
但是这个表达式不会一样,有些表达式有更多的 && 运算符和更多的条件运算符。我该如何分割这个
最佳答案
如果您知道分隔符字符串,则可以使用库函数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。
关于c - C 中使用条件运算符拆分字符串表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48616454/