開いているファイルからデータを読み取る関数に渡すfmemopen
変数を作成するために使用しています。FILE* fid
その関数のどこかで、次のコードを使用してファイルのサイズを調べます。
fseek(fid, 0, SEEK_END);
file_size = ftell(fid);
これは通常のファイルの場合はうまく機能しますが、fmemopen
私が作成したファイルIDの場合は常にfile_size = 8192
なぜこれが起こるのか考えはありますか?通常のファイルとで作成されたファイルの両方で機能する正しいファイルサイズを取得する方法はありますfmemopen
か?
編集:
私の呼び出しfmemopen
:
fid = fmemopen(ptr, memSize, "r");
ここでmemSize
!= 8192
EDIT2:
最小限の例を作成しました。
#include <cstdlib>
#include <stdio.h>
#include <string.h>
using namespace std;
int main(int argc, char** argv)
{
const long unsigned int memsize = 1000000;
void * ptr = malloc(memsize);
FILE *fid = fmemopen(ptr, memsize, "r");
fseek(fid, 0, SEEK_END);
long int file_size = ftell(fid);
printf("file_size = %ld\n", file_size);
free(ptr);
return 0;
}
ところで、私は現在別のコンピューターで作業しており、ここでfile_size=0を取得します