2009-10-03 28 views
7

Escriba un pequeño programa en C, que durante la compilación toma otro programa desde el terminal de entrada, y al ejecutar da el resultado del segundo programa . (NOTA: la clave es, piense en UNIX).¿Cómo escribir el programa durante la compilación?

Supongamos que el programa es 1.c Luego, durante la compilación de

$ cc -o 1 1.c 
int main() 
{ 
    printf("Hello World\n"); 
} 
^D 
$ ./1 
Hello World 
$ 
+0

¿dónde está el problema? –

+4

¿No cuenta el título como una pregunta? – Tom

Respuesta

14

Este es un viejo truco parlaour supongo

Mi programa, tty.c:

#include "/dev/tty" 

Shell:

$ gcc tty.c 
int main() { 
printf("Hey\n"); 
} *Ctrl-D here* 
In file included from tty.c:1: 
/dev/tty: In function ‘main’: 
/dev/tty:2: warning: incompatible implicit declaration of built-in function ‘printf’ 
$./a.out 
Hey 
+1

hmm, limpio. 1515151515 –

+2

Eso es realmente una respuesta sorprendente ... nunca pensé que había una manera de hacer las cosas ... – codingfreak

1

La forma más razonable hacer una compilación leer un archivo sería #include, pero no es obvio para mí cómo hacerlo lee la entrada estándar de forma portátil en todos los sistemas Unix (fácil en Linux, gracias a la magia de /proc!, pero eso no sería portátil).

Cuestiones relacionadas