1

私は高校生で、Turbo C ++コンパイラを使用する必要があります。これは非常に古いコンパイラであることは知っていますが、私の状況を理解してください。

だから私は従業員データベースにコードを書いていました。コードスニペット:

userdb user;
fstream fil;
while(fil.read((char*)&user,sizeof(userdb)))
   {
       cout<<user.name;
       cout<<user.pass;
       cout<<user.age;
       cout<<user.address;
   }
fil.close();

ここで問題となるのは、ユーザーがデータベースに自分のアドレスを入力していない場合、コンパイラーがガベージを表示することです。

画面に印刷されないように、値に何も(ゴミ)がないかどうかを確認するにはどうすればよいですか?(address [0] ='\ 0'およびstrcmp( ""、address)== 0を試しましたが、これは機能しません)

4

1 に答える 1

2

空のフィールドは、このコンテキストでは何も意味しません。実際、ファイルからNバイトを読み取り、それらをメモリに保存しています。メモリのこの部分を文字列として解釈するようにコンピュータに指示します。フィールドがであるかどうかを知るために行うことは何もありません。

あなたの最善の策は、この記憶を見て、それが実際の住所のように見えるかどうかを推測することです。

おそらく最初に、固定サイズの文字配列に格納されているこのアドレス文字列に終了文字が含まれているかどうかを確認できます。そうでない場合は、それが無効であると推測でき、文字配列の最後にこの終了文字を追加する可能性があります。

于 2012-12-12T07:37:39.137 に答える