ftell (stdin) causa error de búsqueda ilegal

El siguiente código genera "Búsqueda ilegal":

#include <stdio.h>
#include <errno.h>
#include <string.h>

int main() {
    errno = 0;
    getchar();
    getchar();
    getchar();
    ftell( stdin );
    printf( "%s\n", strerror(errno) );
}

Esto ocurre cuando ejecuto "cat script | ./a.out" y cuando ejecuto "./a.out". El problema es con ftell, por supuesto. Mi pregunta es: ¿por qué ocurre esto? Creo que stdin puede ser buscable. fseek también causa el mismo error. Si stdin no se puede buscar, ¿hay alguna forma de que pueda hacer el mismo tipo de cosas?

Gracias por tus respuestas.

Respuestas a la pregunta(1)

Su respuesta a la pregunta