c - strtok() 无法正常运行

标签 c strtok

当我尝试分离 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/

相关文章:

c - 查找字符串是否是 C 中的迭代子字符串算法?

c - 运行时错误 SIGFPE 。为什么?

c - K&R 书上说使用赋值运算符只会计算一次表达式?

c - strtok函数c解释

c - 用 strtok 分隔字符串

c - 如何修复我在 'else' 之前说预期表达式的错误

c - 初始化结构时出现段错误

c - 将命令行语句解析为标记列表

c - strtok() 如何在 C 中将字符串拆分为标记?

c - C 中局部变量的 strtok