gpt4 book ai didi

c - 使用 strtok_s 使用嵌套循环标记两个字符串

转载 作者:行者123 更新时间:2023-11-30 17:42:52 35 4
gpt4 key购买 nike

我正在尝试使用 strtok_s 函数标记嵌套循环中的两个字符串,但是我无法解析由 delimeter(;) 分隔的完整字符串,其代码是

char* string1Bigrams = "he;el;ll;lo";
char* string2Bigrams = "he;el;ll;lo;ow;ed";
string1Bigram = strtok_s(string1Bigrams,";", &str1Sep);
while( string1Bigram != NULL )
{
string2Bigram = strtok_s(string2Bigrams, ";", &str2Sep);
while( string2Bigram != NULL )
{
if(strcmp(string1Bigram, string2Bigram) == 0)
{
bigramMatches++;
break;
}
string2Bigram = strtok_s(NULL,";", &str2Sep);
}
string1Bigram = strtok_s(NULL,";",&str1Sep);
}

当循环运行时,它会给出随机行为。有时在字符串结束之前获取 NULL 作为标记。

关于如何做到这一点的任何建议

谢谢

最佳答案

strtok* 系列函数在对字符串进行标记化时会对其进行修改,因此在第二次及之后的内部循环中,您将标记字符串“he”,而不是原始字符串“he;el;ll;”。低;低;ed”。

如果您想使用 strtok_s 函数解决此问题,您有两个选择:您可以分两个阶段进行,首先对字符串进行标记以生成两个二元组列表,然后比较列表以查找匹配项,或者您可以标记第二个字符串的副本,在每次通过内部循环后从原始字符串恢复副本。

关于c - 使用 strtok_s 使用嵌套循环标记两个字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20393520/

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