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

带逗号空格和制表符的strtok

  •  0
  • user2908206  · 技术社区  · 8 年前

    因此,请考虑以下字符串:

    1,2.2, 3.5 ,6,     7.7
    

    我想把每个数字分开,所以直到现在我都在尝试:

    void readuserinput(char *ch)
    {
        char* buffer;
        buffer = strtok(ch, ",");
        while (buffer) {
            printf("%s\n", buffer);
            buffer = strtok(NULL, ",");
            while (buffer && *buffer == '\040')
                buffer++;
        }
    }
    

    但这忽略了 Tab 并打印号码 7.7 具有 tab 之前

    1 回复  |  直到 8 年前
        1
  •  0
  •   bolov    8 年前

    正如你在 strtok documentation 可以为其指定多个分隔符。因此,您不必手动处理空白。 strtok 将为您做到这一点:

    void readuserinput(char *ch)
    {
        ch = strtok(ch, ", \t");
        while (ch)
        {
            printf("%s\n", ch);
            ch = strtok(NULL, ", \t");
        }
    }