私はWHOISレコードファイルを読んでいます。サンプルファイルの最初の行は、エディタでは、読み取ります。「ID:0--0.gaは」ifstream read:余分なバイトはどこから来ますか?
コードでは、私は最初の行で始まることを確認するためにチェックし、「ID:」を次のように
しかし// given ifstream * fs,
char id[3];
streampos pos = fs-> tellg();
fs -> read(&id[0],3);
fs -> seekg(pos);
if (// id[3] is "id:" ...
、私はこれを行う(と私は、デバッガを実行しています。さらには、それを打ち鳴らすのではなくgccでコンパイルされている)、私はid
で、次の結果が得られます。
それは読ん文字「i」、「d」、「:」に加えて、
\xb87#_?
疑問符には停止記号が付いています。私は適切な長さの配列に3バイトしか読み込んでいないので、 "余分なもの"をどのように読み取ることができたかわかりません。
また、ifステートメントはtrueと評価されます。
これはコードミス、デバッガのエラー、または何か他のことが起こりますか?
nope - デバッガが最初のヌルまでの文字列を表示するだけです。 id 4バイトを作成し、id [3]を\ 0 – pm100
@ pm100に設定する必要があります。 – bordeo
@ pm100私はあなたがカップルupvotesを持って参照してください。なぜ誰かが理由を説明し、答えを受け入れることを望むなら、数分間は病気を残してください。それ以外の場合は削除します。 – bordeo