最初の文字列が2番目の文字列よりも大きい場合、strcmpは正の数を返すはずだと思いました。しかし、このプログラム
#include <stdio.h>
#include <string.h>
int main()
{
char A[] = "A";
char Aumlaut[] = "Ä";
printf("%i\n", A[0]);
printf("%i\n", Aumlaut[0]);
printf("%i\n", strcmp(A, Aumlaut));
return 0;
}
65
、、-61
およびを出力し-1
ます。
なんで?見落としているものはありますか?UTF-8として保存しているという事実が、物事に影響を与えるのではないかと思いました。2文字で構成され
ているのでご存知でしょう。Ä
ただし、8ビットエンコーディングとして保存し、両方の文字列の長さが1であることを確認しても効果がないため、最終的な結果は同じです。
私は何が間違っているのですか?
重要な場合は、ここで32ビットLinuxでGCC4.3を使用します。