c - 提取两个定界符之间的数据

标签 c delimiter string-parsing

我只想知道是否有可能拾取两个定界符(定界符为字符串)之间存在的数据。

例如原始字符串如下

<message%20type%3D"info"%20code%3D"20005">%20<text>Conference%20successfully%20modified</text>%20<data>0117246</data>%20%20</message>%20


我想要<text>标记之间的数据。我需要数据的字符串可以不同。字符串也可以像这样

<message%20type%3D"info"%20code%3D"20001">%20<text>Conference%20deleted</text%20%20<vanity>0116976</vanity>%20</message>%20<message%20type%3D"info"%20code%3D"20002">%20<text>Number%20of%20conferences%20deleted</text>%20<data>1</data>%20%20</message>%20  


但是我总是需要<text>标记之间的数据。

那么用C语言有可能还是有其他选择?

最佳答案

我会选择strstr()

例如:

#include <stdio.h>
#include <string.h>

int main(void) {
    char data[] = "<message%20type%3D\"info\"%20code"
                  "%3D\"20005\">%20<text>Conference%"
                  "20successfully%20modified</text>%"
                  "20<data>0117246</data>%20%20</mes"
                  "sage>%20";
    char *p1, *p2;
    p1 = strstr(data, "<text>");
    if (p1) {
        p2 = strstr(p1, "</text>");
        if (p2) printf("%.*s\n", p2 - p1 - 6, p1 + 6);
    }
    return 0;
}

关于c - 提取两个定界符之间的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28451377/

相关文章:

ios - 用于释放密码的 iPhone 内存管理(生产中的 Malloc Scribble?,用零填充释放内存?)

c - speex_encode_int() 始终返回 70 个编码输出字节

c - 读取带有分隔符的数据字符串并存储到结构中

java - 如何在 Java 中从字符串设置字体

java - 正则表达式用于从字符串中删除单引号(所有格名词除外)?

c - Frama-C 排序函数

c++ - 将整数文字赋给指针?

windows - 获取文件名前的部分字符串作为目录

linux - 在大文件中按分隔符拆分行

C++解析可变长度的 double 行