【发布时间】:2015-02-06 03:26:52
【问题描述】:
假设我有字符串:
char* foo = " blah blee bleck ";
现在说我要阅读并扔掉前两个字:
int bar = 0;
sscanf(foo, "%*s%n", &bar);
foo += bar;
if(bar > 0) sscanf(foo, "%*s%n, &bar);
我的问题是如何判断第二个 sscanf 是否读到了什么?
我是否需要在每次读取之间将bar 设为 0 以确定是否实际读取了字符串,还是有更好的方法?
编辑:
检查 sscanf 返回值将不起作用,因为 %*s 和 %n 不会增加 sscanf 的返回值:
printf("%d ", sscanf(foo, "%*s%n", &bar));
printf("%d ", bar);
printf("%d ", sscanf(foo + bar, "%*s%n", &bar));
printf("%d\n", bar);
将输出:
0 6 0 6
【问题讨论】:
-
@pmg 是的,
sscanf返回EOF的概念是我所缺少的。
标签: c scanf dummy-data