2001/01/15 [月]
C 言語の実行時ライブラリに、文字列を比較する strcmp という関数があります。しかし、kernel32.dll の中にも同様の働きをする lstrcmp という関数があります。ではこれらの関数を混在して使用してもよいようなものなのでしょうか?
実は、strcmp と lstrcmp の働きは微妙に違います。例えば、次のプログラムを実行します。
printf("ABCD abcd %d %d\n", strcmp("ABCD","abcd"), lstrcmp("ABCD","abcd"));
これを VC++ でコンパイルして実行すると、結果は、"ABCD abcd -1 1" となり一致しません。このようなことから、文字列の大小を判定するような使い方をする場合には、関数の選択を注意する必要があります。
実は、strcmp と lstrcmp の働きは微妙に違います。例えば、次のプログラムを実行します。
printf("ABCD abcd %d %d\n", strcmp("ABCD","abcd"), lstrcmp("ABCD","abcd"));
これを VC++ でコンパイルして実行すると、結果は、"ABCD abcd -1 1" となり一致しません。このようなことから、文字列の大小を判定するような使い方をする場合には、関数の選択を注意する必要があります。
by seclan