Вам нужно позвонить ftell
после fseek
. Попробуйте:
long fileSize(FILE *fp){
long start;
fflush(fp);
rewind(fp);
start = ftell(fp);
fseek(fp, 0L, SEEK_END);
return ftell(fp);
}
Нет необходимости делать разницу, поэтому ваш первый ftell
бесполезен, и вы можете от него избавиться. Я бы использовал:
long filezise(FILE *fp)
{
fseek(fp,OL,SEEK_END);
// fseek(f, 0, SEEK_SET); - only if you want to seek back to the beginning
return ftell(fp);
}
Также убедитесь, что вы открываете свой файл в двоичном режиме.