带逗号空格和制表符的 strtok

strtok with comma spaces and tab

所以考虑这个字符串:

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 == '0')
            buffer++;
    }
}

但这忽略了 Tab 并打印了数字 7.7tab 之前。

如您在 strtok documentation 中所见,您可以为其指定多个分隔符。所以你不必手动处理空格。 strtok 会为您做到这一点:

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