如何设置sscanf()忽略字符串开头的字符?

her*_*ian 3 c c++ scanf

我有一个字符串如下

 char row[]="11/12/1999 foo:bar some data..... ms:12123343 hot:32";
Run Code Online (Sandbox Code Playgroud)

我想通过使用sscanf将'ms'val插入int变量.但我不知道如何配置ssscanf忽略行中的第一个数据.我试着打击但不做这个工作.

int i;
sscanf(row,".*ms:%d",i);
Run Code Online (Sandbox Code Playgroud)

pmg*_*pmg 5

我认为,不是使用sscanf()忽略数据,最好的办法是使用另一个函数来获取所需字符串的一部分.

我建议strstr().例如

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

int main(void) {
    char row[] = "11/12/1999 foo:54654 some data..... ms:12123343 hot:32";
    char *ms;
    int i;

    ms = strstr(row, "ms:");
    if (ms == NULL) /* error: no "ms:" in row */;
    if (sscanf(ms + 3, "%d", &i) != 1) /* error: invalid data */;
    printf("ms value is %d.\n", i);
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

您可以在ideone上看到运行代码.