C 多个Strtok确定分隔符

标签 c strtok

我正在编写一个 C 程序,用户可以输入一串 1-3 位数字,后跟反斜杠,然后再输入 1-3 位数字,或者他们可以输入 1-3 位数字,后跟逗号,然后再输入 1 -3 位数字,并且迭代次数没有限制。

我需要确定输入分隔符是反斜杠还是逗号(以确定如何处理数字)并将数字放入数组中。

我想到的方法是使用 strtok,如下所示。该字符串作为 char *token 输入。

op_tok1 = strtok(token, "\\");
if(op_tok1 != NULL)
{
        /* Process numbers */
        return;
}

op_tok2 = strtok(token, ",");
if(op_tok2 != NULL)
{
    /* Process other numbers */
    return;
}

这适用于任何用反斜杠分隔的内容,但不适用于逗号。我相信这是因为 strtok 混淆了 token 变量。这是真的?有更好的方法来解决这个问题吗?谢谢!

最佳答案

我当然会考虑更好的方法。如果您可以很好地依赖输入的格式(即,实际上是三位数字后跟允许的分隔符之一),您可以执行以下操作:

char *pos = 0;

while (2 == sscanf(input+pos, "%d%c", &number, &delimiter)) {
    if ('\\' == delimiter)
        process_backslash(number);
    else if (',' == delimiter)
        process_comma(number);
    else
        error_invalid_delimiter(delimiter);
    pos += 4;
}

关于C 多个Strtok确定分隔符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10358309/

相关文章:

c - 想在 strtok 之后释放我的指针 token

c++ - Strtok 和忽略用户名的能力?

c - 指针在字符串内移动

c - 通过强制转换取消引用 void 指针

c - 从 C 语言的电话簿代码的文本文件中读取信息

c - 将字符串分成 'first' 和 'second'

c++ - strtok、char** 和内存

c - 为什么C语言中的cexp(+infinity+I*infinity)=+/-infinity+I*NaN?

c - 指向自身的指针 C

sql - 有谁知道为什么我的立即执行不能在 PRO*C 中编译?