-3

当我尝试分离标记这个“(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();
}
4

1 回答 1

2

这个:

ptr=strtok(NULL," ");

实际上应该是:

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

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

或者你可以有类似的东西const char* delimiters = "-() ";,每次你使用strtok那组分隔符(例如ptr = strtok(string, delimiters);)时都使用它。

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

于 2013-09-09T13:57:19.847 回答