繁体   English   中英

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

[英]How to set sscanf() to ignore characters at start of string?

我有一个字符串如下

 char row[]="11/12/1999 foo:bar some data..... ms:12123343 hot:32";

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

int i;
sscanf(row,".*ms:%d",i);

我认为,不是使用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;
}

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

小丑在shell中使用,但sscanf不会以这种方式处理*字符。

7.21.6.2 fscanf函数
- 可选的赋值抑制字符*。

有几种解决方案。 例如:

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

char *pend = strrchr(row, ':');
sscanf(pend, ":%d", &i);

您还可以使用scanfstrstr scanset。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM