字符串---比较(2)
程序员文章站
2022-05-23 14:10:56
...
我们知道,字符串比较是需要通过遍历的,判定字符串比较已经结束的标志是出现了不同的字符或者字符串已经结束。根据数学上学到的正难则反的原则,字符串比较需要进行的条件就是,每个字符都是相同的且字符串1和字符串2都没有结束。
#include<stdio.h>
#include<assert.h>
int my_strcmp(const char *di, const char *si)
{
assert(di != NULL && si != NULL);
int i = 0;
while (*(di + i) == *(si + i) && *(di + i) != '\0') //其实判断任何一个字符串没有结束都是可以的
{
i++;
}
int tag = *(di + i) - *(si + i);
return tag;
}
int main() {
char const *p1 = "abcdef";
char const *p2 = "abcdefg";
int tag = my_strcmp(p1, p2);
printf("%d\n",tag);
return 0;
}
在程序里面判断字符串比较继续进行的条件,只对一条字符串要求没有到达字符串尾,其实是将对另一条的要求省略了,因为省略了不影响整个表达式的最终结果。