分享
为什么问答平台  ›  专栏  ›  技术社区  ›  Cacahuete Frito

获取指向结束位置的指针 - sscanf: Get a pointer to end position

  •  0
  • Cacahuete Frito  · 技术社区  · 5 月前

    我想分析 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);
    

    但是 sSCAN() 不更新指针。有办法吗?

    编辑:

    从@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所做的吗?

    1 回复  |  直到 5 月前
        1
  •  1
  •   pmg    5 月前

    使用 "%n" 格式字符串中的转换说明符…以及相应的变量。