c - C 中使用条件运算符拆分字符串表达式

标签 c string split

我正在输入字符串数组,每个数组都有一个表达式。我想在考虑所有条件运算符的情况下拆分表达式。 我的表达式可能像 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);

现在qr指向保存输入字符串的两个部分的缓冲区。请注意,如果在 str1 中找不到 sep,则 strstr 将返回 NULL,因此,如果您不能保证 sep 在字符串中,请在继续之前检查 NULL。

关于c - C 中使用条件运算符拆分字符串表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48616454/

相关文章:

java - 字符串相乘?

Java 数组拆分和重新连接。丢失的元素

java - split ("\\W") 和 split ("[^\\w' ]"有什么区别

使用 mknod() 创建目录

python - float 组中的字符串数组,无需更改格式

python - 它是python中最简单的子串吗?

python - 使用一个分隔符但多个条件分割字符串

c - n & (n-1) 这个表达式是做什么的?

c - 为什么当 *(int *)(0) = 0 时 printf 不起作用;存在

c++ - Xlib的Colormap在哪里定义的?