C 语言fseek. ftell调用失败(fseek返回非零值,ftell返回-1)
太长不看版
fseek调用失败,返回非零值,是因为传入的参数超过了文件尾,或者文件大于2G,需要使用fseek的64 bit版本_fseeki64.
ftell调用失败,返回-1,唯一一次遇到是因为文件大于2G,需要使用ftell的64bit版本,_ftelli64.
BUG重现
size_t offset = 0;
size_t file_data_size = 0,pos_start = 0,pos_end = 0;
unsigned char * buffer = NULL;
pos_start = ftell(fp);//此处正常
fseek(fp, 0L, SEEK_END);
pos_end = ftell(fp);//此处返回一个很大的值
file_data_size = pos_e