首页 > 解决方案 > 查找哪个分隔符导致在 C 中 strtok() 处的索引值处拆分

问题描述

我发现了分裂的确切位置,但现在我试图找出哪个分隔符导致在哪个迭代中分裂;

int main(){

char *string;
printf("Enter string:");
scanf("%s",string);
const char *delimiters = "12345";    
char *p = strtok( string, delimiters );

while ( p )
{
    printf("%d %s\n",p-string,p);        
    p = strtok( NULL, delimiters);
}
return 0;
}

这会将字符串从必要的位置拆分,但我需要知道哪个分隔符在每次迭代中导致拆分,因为 *delimiters 混淆了。我的代码的结果最后也会产生一个巨大的数字,我不明白为什么。

标签: cstring

解决方案


改为使用strpbrk()

char s[] = "Hello World";

char *p = s;
char *tok = p;
p = strpbrk(p, "lW");

char sep = *p;
*p++ = '\0';

printf("sep: %c\n", sep);
printf("tok: %s\n", tok);

p = strpbrk(p, "lW");
// ...

推荐阅读