我的代码有一些问题。我需要在 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/