c - 在 C 中使用多个定界符进行解析

标签 c string parsing delimiter

在 C 中,解析具有多个定界符的字符串的最佳方法是什么?假设我有一个字符串 A,B,C*D 并想存储 A B C D 的这些值。我不确定如何优雅地处理 *,其他而不是存储最后一个字符串 C*D,然后使用 * 分隔符单独解析它。

如果它只是 A,B,C,*D 我会使用 strtok() 并忽略 *D 的第一个索引来得到 D,但是 * 之前没有逗号,所以我不知道 * 来了。

最佳答案

您可以在strtok 中使用多个 定界符,第二个参数是一个C 字符串,其中包含列表 定界符,而不仅仅是一个单分隔符:

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

int main (void) {
    char myStr[] = "A,B,C*D";

    char *pChr = strtok (myStr, ",*");
    while (pChr != NULL) {
        printf ("%s ", pChr);
        pChr = strtok (NULL, ",*");
    }
    putchar ('\n');

    return 0;
}

该代码的输出是:

A B C D

关于c - 在 C 中使用多个定界符进行解析,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27791179/

相关文章:

terminal - 如何使终端程序对鼠标点击使用react

c - 查找具有相同第一个字符的单词

c - 我如何知道 Leak Sanitizer 是否在编译时启用?

c++ - 自定义异常中的损坏消息

javascript - 从 JSON 对象中删除所有键

c# - 仅转换特定值的有效方法

c - 通过字符串声明分配内存

python - pandas 在某些特定条件下从数据帧(分组)中删除重复项

arrays - 如何组合匹配模式的数组中的元素?

java - 用Java制作一个简单的CSV文件