C 言語の文字列比較
strcmp という関数が用意されている。String compare の略だろうか。文字列引数を2つとり、その2つが同じだったら 0 を、異なる場合には 0 以外の値を返す。
#include <stdio.h> #include <string.h> int main(int argc, char *args[]){ if ( argc == 3 ) { int result = strcmp(args[1], args[2]); printf("result is %d.\n", result); if( result ){ printf("%s and %s are not equals.\n", args[1], args[2]); } else { printf("%s and %s are equals.\n", args[1], args[2]); } } else { printf("Usage: %s $1\n", args[0]); } return 0; }
以下、実行例。
$ gcc strcmpsample.c $ ./a.out aaa aaa result is 0. aaa and aaa are equals. $ ./a.out aaa bbb result is -1. aaa and bbb are not equals. $ ./a.out aaa AAA result is 32. aaa and AAA are not equals. $
大文字小文字は区別されるようだ。感覚的には、同じだった場合に正(true)扱いしてほしいと思うが、正常終了の場合は 0 が返るという仕様に従っているのか、同じだった場合に 0 が返るために false 扱いとなってしまう。この点、ちょっと使いにくい気がする。