fopen/fread

ftell によるサイズ取得

ファイルサイズの取得がうまくいかないです。
以下のコードだと 0 が返ります。

FILE* f = fopen("/SERVERS/TEST.SCM", "rb");
if (NULL == f)
{
    _printf("file open error\n");
    return -1;
}
if (-1 == fseek(f, 0, SEEK_END))
{
    perror("fseek");
    return -1;
}
size_t size = ftell(f);
_printf("file size = %d\n", size);
fclose(f);

fread

fread でファイルの先頭しか読めていないっぽいです。

FILE* f = fopen("/SERVERS/TEST.SCM", "rb");
if (NULL == f)
{
    _printf("file open error\n");
    return -1;
}
size_t size = monapi_file_get_file_size(f->_file); // 19616 byte
_printf("file size = %d\n", size);
char* buf = new char[size];
int readSize = fread(buf, 1, size, f);
_printf("readSize = %d pos=%d\n", ftell(f)); // => readSize = 19616 pos=1
_printf("buf=%s\n", buf);  // 1024 byte しか読めてない
delete[] buf;
fclose(f);

たびたびすみません。
id:shotaro_tsuji