[英]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;
}
小丑在shell中使用,但sscanf
不会以这种方式处理*
字符。
7.21.6.2
fscanf
函数
- 可选的赋值抑制字符*。
有几种解决方案。 例如:
#include <stdio.h>
#include <string.h>
char *pend = strrchr(row, ':');
sscanf(pend, ":%d", &i);
您还可以使用scanf
或strstr
scanset。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.