当我尝试分离 token “(555) 333-444”时,下面的代码没有给出所需的输出。我需要函数来分别分离所有这些 555、333、444。 我的错误可能是什么?
输出:
555
333-444
#include <stdio.h>
#include <string.h>
int main(void){
char *ptr;
char tel[]="(555) 333-444";
ptr=strtok(tel,"-() ");
while (ptr!=NULL)
{
printf("%s\n", ptr);
ptr=strtok(NULL," ");
}
getch();
}
最佳答案
这个:
ptr=strtok(NULL," ");
实际上应该是:
ptr=strtok(NULL,"-() ");
您需要始终指示要在循环中使用的分隔符。 strtok
不会“记住”它们。
或者您可以使用类似 const char* delimiters = "-() ";
的内容,并且每次将 strtok
与该组分隔符一起使用时就使用它(例如ptr = strtok(字符串、分隔符);
)。
您不必手动列出所需的所有分隔符。
关于c - strtok() 无法正常运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18699701/