2016-05-22 6 views
-5

私はC言語の文字列に取り組んでいます。正確にLexicographic Orderとは何か、そしてC言語でどのように使われているのかを聞きたいと思います。これは2つの文字列を比較する最良の方法です。私はstrcmpについて読みましたが、それは辞書編集の比較ですが、私は混乱しています。Lexicographic Order in C

+1

辞書編集がどのようなものかを知りたい場合は、定義を検索するか、 "字句辞書"のタグテキストを読んでください。 Cの文字列の比較では、達成しようとしていることをより具体的にする必要があります。 – Arc676

+0

Wikipediaには、[辞書順](https://en.wikipedia.org/wiki/Lexicographical_order)(必要ないと思われる)や[アルファベット順](https://en.wikipedia.org/)の記事があります。 wiki/Alphabetical_order)(これはより有用である可能性が高い)。 'strcmp()'を使うと、シングルバイトコードセットのための 'コードポイント順'が得られます。 –

答えて

0

辞書順は、レキシコンによって定義された順序、または人々のコミュニケーション方法によって定義された順序です。英語を話す人間は、私たちの辞書ではAppleという言葉がCatの前に来るということに同意します。私たちはそれを「アルファベット順」と呼んでいます。あなたのケースでは、strcmpを使用すると、ASCIIチャートで定義された順序になります。これは、一貫性のある大文字小文字を使用する限りアルファベット順になります。 'A'はASCIIチャートの 'B'の前に表示されるため 'A'は 'B'より小さい。

1

strcmpは、文字列を比較するために辞書順を使用します。つまりアルファベットに従います。英語では、FはGの直前にあり、ZはYの直後に来ます。strcmpはこの順序を考慮しています。なぜなら、ASCIIテーブルがアルファベット順に文字を並べ替えるからです。典型的strcmp関数は、それは\0は見られなかったが、文字をループ、及び現在の文字が等しい

int strcmp(const char *a, const char *b) 
{ 
    for (; *a && *b && *a == *b; ++a, ++b) 
     ; 

    return *b - *a; 
} 

あろう。文字が等しくならないか、または\0が見えるとすぐに、ループが壊れて、return式が評価されます。 \0が見られた場合は、両方の文字が等しく、\0 - \0は0である必要があります。