>>165
fgetc(fp); で最後の一文字を読み込んとすると今はEOFの場所にあるわけだが
その状態でfeof(fp)を呼び出してもEOFを検出しない
現在EOFにある状態でfgetc(fp);を呼び出して初めてfeof(fp)は0以外を返す

while( fgetc(fp)!=EOF ) {
 byte++;
}
にすればよいかと