我正在编写一个 C 程序,用户可以输入一串 1-3 位数字,后跟反斜杠,然后再输入 1-3 位数字,或者他们可以输入 1-3 位数字,后跟逗号,然后再输入 1 -3 位数字,并且迭代次数没有限制。
我需要确定输入分隔符是反斜杠还是逗号(以确定如何处理数字)并将数字放入数组中。
我想到的方法是使用 strtok,如下所示。该字符串作为 char *token 输入。
op_tok1 = strtok(token, "\\");
if(op_tok1 != NULL)
{
/* Process numbers */
return;
}
op_tok2 = strtok(token, ",");
if(op_tok2 != NULL)
{
/* Process other numbers */
return;
}
这适用于任何用反斜杠分隔的内容,但不适用于逗号。我相信这是因为 strtok 混淆了 token 变量。这是真的?有更好的方法来解决这个问题吗?谢谢!
最佳答案
我当然会考虑更好的方法。如果您可以很好地依赖输入的格式(即,实际上是三位数字后跟允许的分隔符之一),您可以执行以下操作:
char *pos = 0;
while (2 == sscanf(input+pos, "%d%c", &number, &delimiter)) {
if ('\\' == delimiter)
process_backslash(number);
else if (',' == delimiter)
process_comma(number);
else
error_invalid_delimiter(delimiter);
pos += 4;
}
关于C 多个Strtok确定分隔符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10358309/