strtok()无法正常运行

时间:2013-09-09 13:46:39

标签: c strtok

当我尝试选择令牌“(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();
}

1 个答案:

答案 0 :(得分:2)

此:

ptr=strtok(NULL," ");

实际应该是:

ptr=strtok(NULL,"-() ");

您需要始终指出您将在循环中使用的分隔符。 strtok不会“记住”他们。

或者您可以使用const char* delimiters = "-() ";之类的内容,只需在每次使用strtok时都使用该分隔符(例如ptr = strtok(string, delimiters);)。

您不必手动列出所需的所有分隔符。