sscanf:获取指向结束位置的指针

sscanf:获取指向结束位置的指针,c,pointers,scanf,C,Pointers,Scanf,我想解析一个const char*str字符串,我需要通过几个调用sscanf() 我举了一些例子,说明如果文件是文本,我可以做些什么,可以用fscanf()解析,它将file*fp指针更新到它停止读取的位置: fscanf(fp, "name %s ", name); fscanf(fp, "date %*i "); fscanf(fp, "{ "); fscanf(fp, " isdst %*i "); fscanf(fp, " yday %*i "); f

我想解析一个
const char*str
字符串,我需要通过几个调用
sscanf()

我举了一些例子,说明如果文件是文本,我可以做些什么,可以用
fscanf()
解析,它将
file*fp
指针更新到它停止读取的位置:

fscanf(fp, "name    %s ", name);
fscanf(fp, "date    %*i ");
fscanf(fp, "{ ");
fscanf(fp, "    isdst   %*i ");
fscanf(fp, "    yday    %*i ");
fscanf(fp, "    wday    %*i ");
fscanf(fp, "    year    %i ", &year);
fscanf(fp, "    mon %i ", &mon);
fscanf(fp, "    mday    %i ", &day);
但是
sscanf()
不会更新指针。有办法做到这一点吗

编辑:

从@pmg comment,我现在有了以下代码:

if (sscanf(str, " %lf%n", &a, &pos) != 1)
    goto err;
str += pos;
if (sscanf(str, " %i%n", &b, &pos) != 1)
    goto err;
str += pos;
这应该相当于一行:

if (sscanf(str, " %lf %i", &a, &b) != 2)
    goto err;

%n就是这样做的吗?

在格式字符串中使用
%n”
转换说明符。。。和相应的变量。

在格式字符串中使用
%n“
转换说明符。。。和相应的变量我建议您阅读行,然后使用
sscanf
解析您想要解析的行(跳过您不想要解析的行)。并始终检查任何类似于scanf的函数返回的内容。我猜你做的解析不起作用,
fscanf
会在某个时候返回
0
(或者甚至
EOF
?)。@Someprogrammerdude是的,我应该检查fscanf,但它正在读取一个我编写的文件,并且知道其中包含所有内容,所以它在那一点上永远不会失败(尽管检查可能更好,因为有人可能会恶意修改它,所以谢谢)@pmg是的,我想这正是我想要的答案!很高兴我能帮忙。祝你玩得开心:)