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 .