関数
strcmp
文字列を比較する。
#include <string.h>
char str1[]="abc";
char str2[]="def";
if ( strcmp(str1, str2) == 0 ){
str1とstr2は同じ文字列
} else {
str1とstr2は異なる文字列
}
文字列が一致すると strcmp が 0 を返すことに注意。
if ( strcmp(str1,str2) ){
文字列が一致
}
ではない。
なぜこういう変な仕様かというと、
- str1 が str2 より (文字コードで比較して) 大きかったら正数を返す
- str1 が str2 より (文字コードで比較して) 小さかったら負数を返す
- str1 と str2 が同じなら 0 を返す
と、どちらが大きいかという情報を受け取れるようになっているからである。
よく
if ( ! strcmp(str1, str2) )
if ( strcmp(str1, str2) == 0 )
どちらの書き方がよいかで議論になるが、当ページ管理人は後者を推奨する (前者の書き方も既に慣用句として認められているとは思うが)。「str1 と str2 の差がゼロである」と覚えよう。