当我尝试选择令牌“(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();
}
答案 0 :(得分:2)
此:
ptr=strtok(NULL," ");
实际应该是:
ptr=strtok(NULL,"-() ");
您需要始终指出您将在循环中使用的分隔符。 strtok
不会“记住”他们。
或者您可以使用const char* delimiters = "-() ";
之类的内容,只需在每次使用strtok
时都使用该分隔符(例如ptr = strtok(string, delimiters);
)。
您不必手动列出所需的所有分隔符。