¿Cuál es la diferencia entre este lseek, fseek, read, fread?

Llamo a estas funciones:

unsigned blah[5];
lseek(0, 100, SEEK_CUR);
read(0, blah, sizeof(blah));

FILE *fr;
fr = fopen(arg[1], "r");
unsigned blah[5];
fseek(fr, 100, SEEK_CUR);
fread(blah, 1, sizeof(blah), fr);

Y ejecuto el primer código al ejecutar este comando:

cat TEXTFILE | ./a.out

Yo ejecuto el segundo código al ejecutar este comando:

./a.out TEXTFILE

Sin embargo, estoy obteniendo resultados diferentes. Mientras que el primero buscó correctamente, por lo que lee el texto correcto, el segundo no. Quiero usar el segundo formato, ¿qué hice mal?

Respuestas a la pregunta(6)

Su respuesta a la pregunta