代码之家  ›  专栏  ›  技术社区  ›  NomeN

在scanf中不在乎

  •  7
  • NomeN  · 技术社区  · 16 年前

    scanf() 但是您只需要字符串中的几个数据点。

    例子:

    const char* store = "Get: 15 beer 30 coke\n";
    const char* dealer= "Get: 8 heroine 5 coke\n";
    const char* scream= "Get: f* beer 10 coke\n";
    

    我想拒绝第二个和第三个字符串,因为它们显然不是7/11的合适列表;

    所以我在考虑以下结构:

    char* bId = new char[16];
    char* cId = new char[16];
    int cokes;
    sscanf([string here], "Get: %d %s %d %s\n", [don't care], bId, &cokes, cId);
    

    这样我就可以保持格式检查,但是我会为[不在乎]放什么,而不会让编译器抱怨呢?

    当然,我可以做一个变量,以后不用,但这不是问题的重点。另外,分别检查左侧和右侧是一个明显的解决方案,我不在这里寻找。

    那么,有没有一种方法可以不关心但仍然检查scanf和friends中字符串的类型呢?

    1 回复  |  直到 16 年前
        1
  •  21
  •   Curd    16 年前

    在%之后使用*作为赋值抑制字符

    例子:

      sscanf([string here], "Get: %*d %s %d %s\n", bId, &cokes, cId);