Pregunta

Es eso posible?

Le permite decir que el código tiene una gran cantidad de líneas scanf. En lugar de correr y la adición de los valores manualmente al depurar de forma manual, es posible para "alimentar" la entrada estándar con datos de modo que cuando el scanf comienza a leer, leerá los datos introducidos sin necesidad de interactuar con el terminal.

¿Fue útil?

Solución

Ponga las líneas de prueba en un archivo, y ejecutar el programa como este:

myprogram < mytestlines.txt

Mejor que la piratería de su programa de alguna manera hacer eso mismo.

Cuando se va a depurar el código, puede configurar el depurador de ejecutarlo con esa línea de comandos.

Otros consejos

Para hacer su programa un poco más versátil, es posible que desee considerar volver a escribir el programa para utilizar fscanf, fprintf, etc por lo que ya puede manejar archivos IO en lugar de sólo consolar IO; a continuación, cuando se desea leer de la entrada estándar o escribir en la salida estándar, sólo haría algo en la línea de:

FILE *infile, *outfile;

if (use_console) {
    infile = stdin;
    outfile = stdout;
} else {
    infile = fopen("intest.txt", "r");
    outfile = fopen("output.txt", "w");
}
fscanf(infile, "%d", &x);
fprintf(outfile, "2*x is %d", 2*x);

Debido a la frecuencia con qué programas sólo manejan stdin / stdout y no permiten que los archivos? Sobre todo si al final de la utilización de su programa en los scripts, puede ser más explícito para especificar las entradas y salidas en la línea de comandos.

int fd[2];
pipe(fd);
close(0); // 0:stdin
dup(fd[0], 0); // make read pipe be stdin
close(fd[0]);
fd[0] = 0;

write(fd[1], "some text", 9); // write "some text" to stdin
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top