C 确定字符串相等比较失败的位置
考虑到这些条件C 确定字符串相等比较失败的位置,c,c-strings,C,C Strings,考虑到这些条件 char * foo = "The Name of the Game"; char * boo = "The Name of the Rose" 我想确定第一个不匹配字符的地址,以便提取公共头(“名称”) 我知道手工编码的循环很简单,但我很好奇是否有strcmp()或其他库函数的变体可以自动为我实现这一点?答案是C++中的任何不同吗?< /P> < P>我相信这个简单的函数将按照你想要的,使用 STRNCMP < /代码>。 (轻微测试…) 输出 字符串在位置16处不同(G与
char * foo = "The Name of the Game";
char * boo = "The Name of the Rose"
我想确定第一个不匹配字符的地址,以便提取公共头(“名称”)
我知道手工编码的循环很简单,但我很好奇是否有
strcmp()
或其他库函数的变体可以自动为我实现这一点?答案是C++中的任何不同吗?< /P> < P>我相信这个简单的函数将按照你想要的,使用<代码> STRNCMP < /代码>。
(轻微测试…)
输出字符串在位置16处不同(G与R)
我相信您可以使用strspn(str1,str2),它返回仅由str2部分组成的str1初始部分的长度
char *foo = "The Name of the Game";
char *boo = "The Name of the Rose";
size_t len = strspn(foo, boo);
printf("The strings differ after %u characters", (unsigned int)len);
不。不存在这样的标准函数。不,我认为不存在这样的函数。哎哟。嗯,这使用了strncmp,但不是一种好的方式。长弦演奏会很糟糕!如果您想获得更好的性能,还可以对字符串不同的地方进行二进制搜索。这段代码会有点复杂,问题是strcpy的ready有O(n)性能,所以find_不匹配基本上有O(n^2)。将
while
行替换为while(*foo++!=*bar++)++n代码>是所有需要的。那会更快,是的。但是它没有使用您最初要求的strXXX
函数。本页()上的示例清楚地表明,它的工作方式与您认为的不同。
char *foo = "The Name of the Game";
char *boo = "The Name of the Rose";
size_t len = strspn(foo, boo);
printf("The strings differ after %u characters", (unsigned int)len);