为什么文件大小与读取1个字节的时间不同?

我正在学习C的文件处理,但遇到了一些问题。 我写的代码如下

# include <stdio.h>
# include <stdlib.h>

int main(void)
{
    FILE * file;
    errno_t err = fopen_s(&file,"f.txt","r");

    fseek(file, 0, SEEK_END);
    int size = ftell(file);
    fseek(file, 0, SEEK_SET);

    char *tmp;
    tmp = malloc(size);
    printf("%d\n", size);

    for (int i = 0; !feof(file); i++)
    {
        fread(tmp + i, 1, 1, file);
        size = i + 1;
    }

    printf("%d\n", size);

    fclose(file);
    free(tmp);
    return 0;

但是,大小输出不相同(第一:78,第二:76),这是什么原因呢?