c - 如何使用strtok获取单词

标签 c string strtok strstr

我的代码有一些问题。我需要在 c 中使用 strtok() 输出字符串“Date WEEk Dae Due Toy De Dae i Date Due”中的单词“Sing”和“Toy”(两者都在单词“Due”和“De”之间)星德”。我尝试使用代码中的 if 语句显式输出单词“Sing”和“Toy”,但我的代码不会产生任何输出,并且在编译期间没有警告。我只是C语言的初学者,所以请耐心等待。我听说其他函数(例如 strstr())可能能够完成与 strtok() 相同的工作,因此如果这些其他函数使用起来更方便,请毫不犹豫地使用这些函数。谢谢。 摘要:我正在尝试使用 strtok() 获取上面字符串中“Due”和“De”之间的单词,是否可以这样做,或者我应该使用其他函数?

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main(){
char string[]="Date WEEk Dae    Due Toy De    Dae i Date    Due Sing De";
char*pch;
pch=strtok(string,"De");

while(pch!=NULL){
  if((*(pch-1)=='a')&&(*(pch-2)=='u'))
    printf("%s\n",pch);

    pch=strtok(NULL,"De");
}
return 0;
}

最佳答案

请记住 strtok() 的第二个参数是一个分隔符列表:

C string containing the delimiter characters. These can be different from one call to another.

现在在您的代码中, token 将在每个大写 D 和小写 e 之后获取。 对于您的描述中提到的情况,更适合使用 strstr() 解决问题。 .

关于c - 如何使用strtok获取单词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43842630/

相关文章:

c - 警告 : implicit declaration of function TableCreate

mysql - C MySQL API 编译器在包含头文件时重新定义时出现警告问题

javascript - 如何在javascript中将带连接的字符串转换为真实字符串?

java - 十进制格式,说它需要是一个字符串?

c - 如何在 C 中对链表进行排序?

c - 如何使用 gtkmozembed.h 编译程序

php - 连接参数中的字符串 (php)

c - 从文件中以不同的字符串读取 2 个巨大的数字

c - 带空格分隔符的 strtok() 函数

c - strtok_s 在 Windbg 中返回不正确的数据