c - strtok:获取分隔符之前的值,而不仅仅是之后的值

标签 c strtok

我试图在 C 语言中将一个字符串拆分成不同的部分。在 C# 中,我只使用了 split(),它创建了一个数组来轻松访问拆分字符串的每个部分。现在在 C 中,我正尝试像这样拆分字符串:"STXS1-21|S2-23ETX"。我想单独得到数字 21 和 23。如果我使用 "STX-|ETX" 的分隔符字符串 strtok,据我所知,我会得到:

  1. S1-21|S2-23ETX
  2. 21|S2-23ETX
  3. S2-23ETX
  4. 23ETX

虽然我试图单独获得数字 21 和 23,但我该如何完成呢?

最佳答案

在您的具体示例中,您可以这样做:

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

int main(void) {
    char str[] = "STXS1-21|S2-23ETX";
    char *sptr = str;
    while (sptr = strchr(sptr, '-'))
        printf("%d\n", atoi(++sptr));
    return 0;
}

程序输出:

21
23

关于c - strtok:获取分隔符之前的值,而不仅仅是之后的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33878483/

相关文章:

c - 如何检查 char 中是否存在 EOF?

c - 字符串值 = "clay"自动更改为 "/000lay"?

c - 为什么 x 有垃圾值(value)?

c++ - 为什么我在这里得到一个 EXC_BAD_ACCESS 以及如何让它工作?

C - 使用 strtok 按分隔符 "mv <from> <to>"拆分字符串 "/"

c - strtok 在这种情况下到底是如何工作的?

c - 在 C 中拆分字符串以识别连续的制表符

c - 使用c的图形LCD编码

c - C 中的 strcat() 函数更改了程序中的随机变量?

c++ - 从文件到字符数组(MFC)