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是的,我想这正是我想要的答案!很高兴我能帮忙。祝你玩得开心:)