Basicamente, você precisa determinar se deve ou não stdin em um terminal, ou algum tipo de redirecionamento / pipe. Para isso, você pode usar a função isatty
.
int main(void){
char buffer[N];
int sum;
/* Load buffer from stdin with fgets, fread, read, ... */
if(!isatty(fileno(stdin)))
printf("%s\n", buffer);
/* Compute sum... */
printf("The sum is %d.\n", sum);
}
Neste caso, quando stdin não é um tty (o que significa que a entrada não foi digitada), o programa imprime o buffer antes de calcular a soma.
No meu sistema, a função isatty
é declarada em unistd.h
. Você também precisará de stdio.h
para obter fileno
.