You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C语言中如何使用多分隔符实现字符串拆分?

问题分析

你现有代码的核心问题是strtok仅使用#作为唯一分隔符,只能将字符串按#切割为32+-、3、2-、3、3几个片段,无法处理拆分连续数字、将数字和后续非数字符号绑定的需求。

解决方案

推荐直接逐字符遍历字符串处理,逻辑更灵活可控,代码实现如下:

#include <stdio.h>
#include <ctype.h>

int main(void) {
    char string[50] = "32+-#3#2-#3#3";
    int i = 0;
    while (string[i] != '\0') {
        // 跳过分隔符#
        if (string[i] == '#') {
            i++;
            continue;
        }
        // 当前是数字,先输出数字
        if (isdigit(string[i])) {
            putchar(string[i]);
            i++;
            // 后面跟的是非数字非#的符号,连续输出直到遇到数字或#或结尾
            while (string[i] != '\0' && string[i] != '#' && !isdigit(string[i])) {
                putchar(string[i]);
                i++;
            }
            // 换行分割每个项
            putchar('\n');
        } else {
            // 非数字非#的前置异常字符直接跳过,可根据需求调整逻辑
            i++;
        }
    }
    return 0;
}

运行输出

3
2+-
3
2-
3
3

完全符合预期拆分结果,即使遇到多位数字、数字后绑定多个符号的场景也能正常处理。

内容的提问来源于stack exchange,提问作者Miguel Barra

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 21:57:04