一種の演習として、文字列比較をできるだけ短く実装したいと思います。コードは以下のとおりです。
#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 の下にあります。