Los tres streams estándar en C
stdin, stdout y stderr, y por qué los diagnósticos van en el tercero.
#include <stdio.h>
int prompt_and_read(int *out) {
printf("value: ");
fflush(stdout);
if (scanf("%d", out) != 1) {
fprintf(stderr, "not a number\n");
return 0;
}
fprintf(stdout, "read %d\n", *out);
return 1;
}
Cómo funciona
- stdout tiene búfer; stderr no, así que los errores aparecen de inmediato.
- Redirigir la salida deja stderr en la terminal.
fflush(stdout)fuerza un prompt a salir antes de leer.
Palabras clave y builtins usados aquí
ifintreturn
El intento, en números
- Líneas
- 13
- Caracteres a escribir
- 211
- Tokens
- 69
- Ritmo de tres estrellas
- 100 tpm
Al ritmo de tres estrellas de 100 tokens por minuto, este intento toma unos 41 segundos.
Paso 2 de 3 en Posicionamiento y streams; paso 10 de 12 en Archivos y E/S.