c - 获取指向两个 C 字符串之间不同的第一个字符的指针

标签 c string

是否有一个标准的 C 函数可以比较两个 C 字符串,并返回指向第一个不同字符的指针,如果字符串相等则返回 NULL?

#include <stdio.h>
int main()
{
    const char *p, *s1 = "foobar", *s2 = "foobaz";

    p = strdiffchr(s1, s2);
    if (!p)
        puts("the strings are equal");
    else
        printf("s1 has %c, where s2 has %c\n", *p, s2[p - s1]);

    return 0;
}

编辑:我选择了以下解决方案:

char *strdiffchr(const char *s1, const char *s2)
{
    while (*s1 && *s1 == *s2) {
        s1++;
        s2++;
    }
    return (*s1 == *s2) ? NULL : (char *)s1;
}

最佳答案

我不认为有这样的功能。不过,可以在单个 for 循环中对其进行编码:

const char *p1, *p2, *s1 = "foobar", *s2 = "foobaz";
for (p1 = s1, p2 = s2 ; *p1 && *p1 == *p2 ; p1++, p2++)
    ; // Loop body is empty, because everything is done in the header.
const char *p = *p1 || *p2 ? p1 : NULL;

Demo on ideone.

关于c - 获取指向两个 C 字符串之间不同的第一个字符的指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21862467/

相关文章:

python - TkInter ListBox 和 .format 的使用

c++ - 实现隐式转换为 char* 的 String 类 (C++)

php - C中的多线程程序 : calculating thread stack space

c - 制作arduino备用功能

c - 需要左值作为赋值的左操作数(C 程序)

java - 字符串内子字符串的计数

string - 如何查找子字符串在给定字符串中出现的次数(包括连接)?

java - 如何在 Java 中将字符串添加到字符串数组?

c - 死后用子进程替换父进程

c - 在C中如何将局部函数变量值传递给另一个函数并无错误地打印值