c - 使用 C sscanf 解析目录路径中的数字

标签 c parsing scanf

我有以下字符串

/foo123/bar123/card45/foofoo/1.3/

我想解析单词“card”后面的数字,在上面的示例中为 45。我应该为此使用 sscanf 吗?如果是,我将如何做?

谢谢

最佳答案

Should I use sscanf for [XYZ problem]

没有。

但是你可以使用 strstrstrtol 代替:

const char *s = "/foo123/bar123/card45/foofoo/1.3/";
const char *p = "card";
const char *t = strstr(s, p);

int i = -1; // a negative number indicates a parse failure, for example
if (t != NULL) {
    t += strlen(p);
    char *end;
    i = strtol(t, &end, 10);
    if (!end || *end != '/') {
        // parsing the number failed
    }
}

关于c - 使用 C sscanf 解析目录路径中的数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16306314/

相关文章:

c - popen 的用途是什么?为什么 fdopen 和 fgets 在某些情况下工作得更好?

c++ - 有没有比遍历每个字节更快的解析方法?

c - 在结构中,scanf 返回 var 地址而不是值

c - Scanf 特定字符到 C 中的数组中

C 编译器错误 : "comparison between a pointer and an integer".

c - 在数组名称中使用 int 计数器

c - 编译器实现中 x++ 和++x 的区别

c - 使用 fgets && sscanf 从数组中读取

Java SAX 解析器命名空间抛出 NullPointerException

java - 只接受有效时间