c - 在C中解析字符串

标签 c string parsing

我需要解析我的字符串,但我的分隔符都是除 a-z 和 A-Z 之外的所有字符。 我怎样才能做到这一点?

我想到了 strtok,但我必须将所有字符写为分隔符,而且它会太长。 示例字符串:

Ax'cda2hsa+AsF(f/a as

需要拆分为: "Ax""cda""hsa""AsF""f""a""as"

C 库中是否有解析函数可以将所有分隔符写为间隔?

最佳答案

如果您不想执行 regex(3),您可以直接遍历字符串并自行执行此操作

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

int main(int ac, char *av[]) {
    char string[] = "   Ax'cda2hsa+AsF(f/a as";
    int i,idx,len;
    len = strlen(string);
    #define MAX_SPLIT 256
    #define MAX_SPLIT_MASK (MAX_SPLIT - 1)
    char buf[MAX_SPLIT];
    for (idx = 0, i=0;i<len;i++) {
        char c = string[i];
        if ((c >= 'a' && c <= 'z') || (c >= 'A' && c <='Z')) {
            buf[idx++ & MAX_SPLIT_MASK] = c;
        } else {
            buf[idx++ & MAX_SPLIT_MASK] = '\0';
            if (idx > 1)
                printf("%s\n",buf);
            idx = 0;
        }
    }
    if (idx > 1) {
            buf[idx++ & MAX_SPLIT_MASK] = '\0';
            printf("%s\n",buf);
    }
    #undef MAX_SPLIT
    #undef MAX_SPLIT_MASK

    return 0;
}

关于c - 在C中解析字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8462804/

相关文章:

c - 如何根据用户输入创建函数?

c - 从用户空间向设备写入数据

java - 一旦响应正确,如何终止 while 循环?

c# - 在字符串中找到一个确切的词

javascript - jQuery 解析后获取未定义的 JSON

java - 使用 Java 直接从标准 RFC 邮件格式的文件系统读取/解析电子邮件/邮件

c - C 中的无限循环,代码块

c++ - 如何在 C\C++ 中调整 .bmp 文件的大小?

c - 用于简单固定(多)精度运算(add、div、mul、sub)的快速 C 代码?

python - 根据分配方法返回不同输出的字符串的身份检查