Por que "while (! Feof (file))" sempre está errado?

Ultimamente, tenho visto pessoas tentando ler arquivos como esse em várias postagens: #include <stdio.h> #include <stdlib.h> int main(int argc, char **argv) { char *path = "stdin"; FILE *fp = argc > 1 ? fopen(path=argv[1], "r") : stdin; if( fp == NULL ) { perror(path); return...