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

时间:2019-01-20 17:57:27

标签: 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 ");
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做什么的?

1 个答案:

答案 0 :(得分:1)

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