Escribir un reporte formateado en C
fprintf escribe a cualquier stream con el mismo lenguaje de formato que printf.
#include <stdio.h>
typedef struct {
const char *lang;
int tpm;
double accuracy;
} Row;
int write_report(const char *path, const Row *rows, size_t n) {
FILE *f = fopen(path, "w");
if (f == NULL) {
return 0;
}
fprintf(f, "%-10s %6s %9s\n", "lang", "tpm", "accuracy");
for (size_t i = 0; i < n; i++) {
fprintf(f, "%-10s %6d %8.1f%%\n", rows[i].lang, rows[i].tpm,
rows[i].accuracy);
}
return fclose(f) == 0;
}
Cómo funciona
- La única diferencia con printf es el argumento del stream.
- Los anchos de columna en la cadena de formato alinean la salida.
- Revisa el valor de retorno cuando la escritura de verdad importa.
Palabras clave y builtins usados aquí
FILENULLcharconstdoubleforifintreturnsize_tstructtypedef
El intento, en números
- Líneas
- 20
- Caracteres a escribir
- 407
- Tokens
- 142
- Ritmo de tres estrellas
- 100 tpm
Al ritmo de tres estrellas de 100 tokens por minuto, este intento toma unos 85 segundos.
Paso 1 de 4 en Escritura y binario; paso 5 de 12 en Archivos y E/S.