gpt4 book ai didi

c - strtok() 的输出不同

转载 作者:太空宇宙 更新时间:2023-11-04 06:11:21 24 4
gpt4 key购买 nike

我想比较两个也包含其他字符的字符串。为了消除我使用的那些字符 strtok()

首先,我将字符串复制到临时缓冲区中,我将在 strtok() 中使用它。

    #include<stdio.h>
#include<string.h>
int main()
{
char ch[50]="supl-dev.google.com";
char ch1[50]="*.google.com";
printf("ch =%s\n",ch);
printf("ch1 =%s\n",ch1);
char temp_ch[50], temp_ch1[50];
strcpy(temp_ch,ch);
strcpy(temp_ch1,ch1);
char *ch_token, *ch1_token;

ch_token = strtok(temp_ch,".");
ch1_token = strtok(temp_ch1,"*");
printf("ch_token=%s\n",ch_token);
printf("ch1_token = %s\n",ch1_token);

return 0;
}

预期结果:

ch =supl-dev.google.com

ch1 =*.google.com

ch_token=supl-dev

ch1_token = *

实际结果:

ch =supl-dev.google.com

ch1 =*.google.com

ch_token=supl-dev

ch1_token = .google.com

这里我期望 ch1_token 应该包含“*”。

最佳答案

没有。你的期望是错误的。您将 ch2 的分隔符设置为 *,这意味着 strtok 将去除 中的前导 * >*.google.com 并返回 .google.com 作为第一个标记。为了得到你想要的,你必须将分隔符设置为 ..

    #include<stdio.h>
#include<string.h>
int main()
{
char ch[50]="supl-dev.google.com";
char ch1[50]="*.google.com";
printf("ch =%s\n",ch);
printf("ch1 =%s\n",ch1);
char temp_ch[50], temp_ch1[50];
strcpy(temp_ch,ch);
strcpy(temp_ch1,ch1);
char *ch_token, *ch1_token;

ch_token = strtok(temp_ch,".");
ch1_token = strtok(temp_ch1,".");
printf("ch_token=%s\n",ch_token);
printf("ch1_token = %s\n",ch1_token);

return 0;
}

现在 ch_token 应该是 supl-devch1_token 应该是 *

关于c - strtok() 的输出不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55794722/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com