私は最も奇妙なことが起こっていますが、なぜそれが起こっているのかよくわかりません。基本的に私がする必要があるのは、fgetcを使用して単純なASCIIファイルの内容をバイトごとに取得することです。奇妙な部分はそれが機能したことですが、それから私はさらにいくつかの文字を追加しました、そして突然それはそこになかった改行を追加し、ファイルの終わりか何かの終わりを超えて読みました。文字通り私がしたのは
do {
temp = (char*) checked_realloc (temp, n+1);
e = fgetc(get_next_byte_argument);
temp[n] = e;
if (e != EOF)
n++;
}
while (e != EOF);
そして、確認するために、各文字を印刷しました
temp_size = strlen(temp)-1;
for(debug_k = 0; debug_k < temp_size; debug_k++){
printf("%c", temp[debug_k]);
}
また、ファイルに含まれていなかった改行を追加したことを除いて、すべてが正しく出力されます。その前に、私は持っていました
temp_size = strlen(temp);
しかし、それはいくつかの未知のバイト(それはぎこちないものを印刷した)で終わった。念のためstrlen(temp)-2を試してみましたが、その特定のファイルで機能しましたが、最後に「a」を追加すると、再び壊れました。
私は正直に困惑しています。なぜこれをしているのか分かりません。
編集:checked_reallocは単なるreallocですが、メモリが不足していないことを確認するための簡単なチェックがあります。これがこれを行うための最も効率的な方法ではないことは理解していますが、なぜ私が魔法のように余分なバイトを読み取っているように見えるのかについてもっと心配しています。