格納されている「名前」に基づいて構造をリンクリストに配置するプログラムがあります。
リスト内のそれらの場所を見つけるには、挿入する名前がアルファベットの前か後かを把握する必要があります。
名前は、私がアクセスできる構造の中にあります。それがより多くの作業である場合、完全な比較は必要ありません。最初の文字だけでも問題ありません。
助けてくれてありがとう!
格納されている「名前」に基づいて構造をリンクリストに配置するプログラムがあります。
リスト内のそれらの場所を見つけるには、挿入する名前がアルファベットの前か後かを把握する必要があります。
名前は、私がアクセスできる構造の中にあります。それがより多くの作業である場合、完全な比較は必要ありません。最初の文字だけでも問題ありません。
助けてくれてありがとう!
2 つの C 文字列a
とb
がある場合、それらの最初の要素を単純に比較できます。
*a == *b
6 つの関係演算子==
のいずれかを指定できます。
C 文字列では、char*
は文字列の最初の文字を指すことに注意してください。
strcmp()
2 つの C 文字列を比較し、それらがどのような順序であるか、または同じかどうかを示します。大文字と小文字を気にしない場合は、 を使用できますstrcasecmp()
。これらの関数は、返す順序を決定するために必要以上の文字列を比較しません。
あなたの質問が何であるかは私には明らかではありませんが、次のようなものがうまくいきます:
if (node1->name[0] <= node2->name[0]) {
...
} else {
...
}
これにより、各ノードの名前の最初の文字が比較されます。
リストを反復処理し、各要素を渡すときに行う比較に基づいて、新しい要素を正しい場所に挿入するだけです。大文字と小文字を区別する最も単純なバージョンは、文字の数値を比較するだけで実行できます (例: a[0] < b[0]
)。または、大文字と小文字を区別しない場合は、両方を一般的な大文字と小文字に変換できます ( を参照ctype.h
)。または、単語全体を と比較することもできますstrcmp
。