c - 查找哪个分隔符导致在 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 混淆了。我的代码的结果最后也会产生一个巨大的数字,我不明白为什么。
解决方案
改为使用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");
// ...
推荐阅读
- docker - Docker 容器不回复主机中的客户端应用程序
- powerbi - 按不同级别聚合时的测量误差
- tfs - 可以使用 GIT 访问哪些 TFS 2018 存储库?
- ios - 如何在 React Native 的 Alert 组件中添加 Star Rating?
- aws-lambda - 参数 ScheduleExpression 无效 - AWS Lambda 触发器计划
- python - 如何用空值替换动态正则表达式?
- amazon-web-services - 如何在 AWS Sagemaker 上部署朴素贝叶斯模型
- java - 如何使用 Maven 和外部 jar 为 java 项目创建和运行单个 jar 可执行文件?
- c# - 无法在 Windows 2016(内部版本 1607)上安装 MSIX 包
- python - 当字符串列表包含“inf”时,将其转换为列表时出错