Dicho esto cuando en la línea de comandos haces COMANDO < ARCHIVO lo que haces es ejecutar el comando o programa y pasar el contenido del archivo al buffer de entrada estándar del comando. Desde tu punto de vista es como si alguien, una vez ejecutado el programa, hubiera escrito todo el contenido del archivo desde el teclado y debieras sacarlo.
En ce existe la función fgets que sirve para sacar una cadena de texto de un archivo, en tu caso el buffer de entrada (que es stdin).
Un posible inicio:
Código
#include <stdio.h> int main() { char str[80] = {0}; /* Cambia la siguiente línea por tu detector * de líneas vacías. **/ } }