2

私のプログラムでは、.txt ファイルから単語を読み取り、それらをリンク リストとハッシュ テーブルの両方に挿入します。

単語の後に 2 つの「\n」文字が続けて読み取られる場合、プログラムが読み取る 2 番目の単語は「\n」になりますが、「\0」で上書きするため、基本的に文字列には「\0」のみが含まれます。 '。

プログラムの次の部分は、単語が実際の単語 (つまり、word[0] != '\n') である場合にのみ実行されるように、if ステートメントを挿入する価値はありますか? 文字列 '\0' は、ハッシュ テーブル/リンク リストのスペースを使い果たしますか?

4

2 に答える 2

1

C では、最初の要素が である文字配列\0空の文字列、つまり長さゼロです。コンテナに空の文字列を保持することはあまり意味がありません。

于 2013-01-13T16:08:46.347 に答える
0

空の文字列を有効なエントリと見なすかどうかによって異なります。単語を保存しているように見えるので、空の文字列は関係ないと思いますが、それはアプリケーション固有です。

たとえば、環境変数が存在する (getenv有効なポインターを返す) 場合がありますが、値は "未設定" (空の文字列) の場合があります。その場合、値が空の文字列であるという事実が重要な場合があります。

では、空の文字列が重要でない場合、それifを無視するステートメントを追加する価値があるでしょうか? if空の文字列を格納および維持するオーバーヘッドは、エントリごとに 1 つのステートメントよりもかなり多くなる可能性があるため、一般的には「はい」です。もちろん、それは推測にすぎません。オーバーヘッドが何であるか、if実行される回数、保存される空の文字列エントリの数はわかりません。あなたもそれを知らないかもしれないので、私のフォールバックの立場は重要なデータを保存することだけです。

于 2013-01-13T16:33:26.910 に答える