我想解析一个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注释中,我现在有以下代码:
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做什么的?
答案 0 :(得分:1)
在格式字符串...和相应的变量中使用"%n"
转换说明符。