作为一种练习,我想尽可能短地实现字符串比较。代码如下:
#include <stdio.h>
int strcmp(const char* a, const char* b)
{
for(;a && b && *a && *b && *a++==*b++;);return *a==*b;
}
int main ()
{
const char* s1 = "this is line";
const char* s2 = "this is line2";
const char* s3 = "this is";
const char* s4 = "this is line";
printf("Test 1: %d\n", strcmp(s1, s2));
printf("Test 2: %d\n", strcmp(s1, s3));
printf("Test 3: %d\n", strcmp(s1, s4));
printf("Test 4: %d\n", strcmp(s1, s1));
printf("Test 5: %d\n", strcmp(s2, s2));
return 0;
}
结果是:
Test 1: 0
Test 2: 0
Test 3: 1
Test 4: 0
Test 5: 0
在将字符串与自身进行比较的情况下出了什么问题?
注意: 我知道有一个更短的解决方案,但我想自己找到它。
编辑:
编译器gcc
在 Ubuntu 下。