私はフォーラムに不慣れです。奇妙な問題があります。read() 関数を使用してファイルからフォーマットされていないデータを読み取る単純なコードがあります。コードを以下に示します。
int main () {
ifstream meshfile;
char buf[1000], ch;
memset(buf, 0, 1000);
meshfile.open ("sometextfile");
meshfile.read (buf, 1000);//38+62+(19*47) + 7);
cout << strlen(buf) << std::endl;
cout << buf << std::endl;
}
以下のサンプル入力ファイルでコードを実行すると、buf の長さとして 1006 が与えられ、buf の追加文字が出力されます。奇妙なことに、これは bufsize が 1000 で 1000 文字が読み取られた場合にのみ発生します。bufsize を > 1000 に変更して 1000 文字を読み取っても、このエラーは発生しません。これはコーディングの問題でしょうか?
サンプル入力ファイルは
fdjgjdskgggggggggggggggggggggggggggggj bvjgdsv dsjkvgds gvdsj gvjdsgvjksdjkfgdsjkgfdsjgfsdjgfjkdsgfkjsdgjfgsdjfgdsjgfsdjgfjsdgfjsgfjsdgfjgsdjfgsdjfgdsjgfsdjgfsdjgfjsdgfjsdgfjsdg fdjgjdskgggggggggggggggggggggggggggggj bvjgdsv dsjkvgds gvdsj gvjdsgvjksdjkfgdsjkgfdsjgfsdjgfjkdsgfkjsdgjfgsdjfgdsjgfsdjgfjsdgfjsgfjsdgfjgsdjfgsdjfgdsjgfsdjgfsdjgfjsdgfjsdgfjsdg fdjgjdskgggggggggggggggggggggggggggggj bvjgdsv dsjkvgds gvdsj gvjdsgvjksdjkfgdsjkgfdsjgfsdjgfjkdsgfkjsdgjfgsdjfgdsjgfsdjgfjsdgfjsgfjsdgfjgsdjfgsdjfgdsjgfsdjgfsdjgfjsdgfjsdgfjsdg fdjgjdskgggggggggggggggggggggggggggggj bvjgdsv dsjkvgds gvdsj gvjdsgvjksdjkfgdsjkgfdsjgfsdjgfjkdsgfkjsdgjfgsdjfgdsjgfsdjgfjsdgfjsgfjsdgfjgsdjfgsdjfgdsjgfsdjgfsdjgfjsdgfjsdgfjsdg fdjgjdskgggggggggggggggggggggggggggggj bvjgdsv dsjkvgds gvdsjgvjdsgvjksdjkfgdsjkgfdsjgfsdjgfjkdsgfkjsdgjfgsdjfgdsjgfsdjgfjsdgfjsgfjsdgfjgsdjfgsdjfgdsjgfsdjgfsdjgfjsdgfjsdgfjsdg fdjgjdskgggggggggggggggggggggggggggggj bvjgdsv dsjkvgds gvdsj gvjdsgvjksdjkfgdsjkgfdsjgfsdjgfjkdsgfkjsdgjfgsdjfgdsjgfsdjgfjsdgfjsgfjsdgfjgsdjfgsdjfgdsjgfsdjgfsdjgfjsdgfjsdgfjsdg