Unfortunately your code is not correct.
.
fopen(argv[1],"r")
To read binary files use binary mode. You should use binary mode even if you are on a POSIX compatible system as this cost you nothing and gives you portability.
.
fgetc(fp) | fgetc(fp)<<8
Evaluation order of subexpressions is unspecified, you don't know which of the two fgetc calls will be executed first.
.
while (!feof(fp)) {
This is not the right way to write a loop that reads the entire file.
.
fseek(fp, end-start+1, SEEK_CUR);
This requires binary mode to work, it has undefined behavior otherwise.