鉴于这些字符串
char * foo = "The Name of the Game";
char * boo = "The Name of the Rose"
我想确定第一个不匹配字符的地址,以便提取公共标题(“ 的名称”)。
我知道手动编码的循环很简单,但我很好奇是否有strcmp()
或其他库函数的变体会自动为我做这个?在C ++中答案是否有所不同?
答案 0 :(得分:1)
string.h
函数。答案 1 :(得分:0)
我相信这个简单的功能会使用strncmp
做你想做的事
(轻度测试......)
int find_mismatch(const char* foo, const char* boo)
{
int n = 0;
while (!strncmp(foo,boo,n)) { ++n; }
return n-1;
}
int main(void)
{
char * foo = "The Name of the Game";
char * boo = "The Name of the Rose";
int n = find_mismatch(foo,bar);
printf("The strings differ at position %d (%c vs. %c)\n", n, foo[n], boo[n]);
}
<强>输出强>
The string differ at position 16 (G vs. R)
答案 2 :(得分:-2)
我相信你可以使用strspn(str1,str2)来返回str1的初始部分的长度,该部分仅包含str2的部分。
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);