C & C++ FAQ
|
|
整数型や実数型の値が等しいか/等しくないかの判断に利用する等値演算子==あるいは!=は、文字列の比較においては利用できません。というのも、char s[10], t[10];
/* … */
if (s == t)
/* … */
は、文字列sとtの内容が等しいかどうかを比較するのではなく、sとtが同じアドレスであるかどうかの比較と解釈されてしまうからです。
文字列の内容が等しいかどうかの比較には、標準ライブラリであるstrcmp関数を利用します。プログラム例を示します。char s[10], t[10];
/* … */
if (strcmp(s, t)) < 0)
/* sの方が小さい */
else if (strcmp(s, t)) > 0)
/* sの方が大きい */
else
/* sとtは等しい */
■ 根拠 ■
標準C
| §7.11.4.2
| The strcmp function
|
標準C99
| §7.21.4.2
| The strcmp function
|
標準C++
| §21.4
| Null-terminated sequence utilities
|
■ 参照 ■