typestar

Una salida, todo liberado en C

El patrón adquirir-verificar-goto, escrito completo.

#include <stdio.h>
#include <stdlib.h>

int process(const char *path, size_t n) {
    int result = 0;
    int *buffer = NULL;
    char *scratch = NULL;

    FILE *f = fopen(path, "rb");
    if (f == NULL) {
        goto done;
    }
    buffer = malloc(n * sizeof(int));
    if (buffer == NULL) {
        goto close_file;
    }
    scratch = malloc(n);
    if (scratch == NULL) {
        goto free_buffer;
    }

    result = (int) fread(scratch, 1, n, f);

    free(scratch);
free_buffer:
    free(buffer);
close_file:
    fclose(f);
done:
    return result;
}

Cómo funciona

  1. Cada adquisición tiene una etiqueta a la cual desenrollar.
  2. Las etiquetas aparecen en orden inverso a la adquisición.
  3. Nada se libera dos veces y nada se olvida.

Palabras clave y builtins usados aquí

El intento, en números

Líneas
31
Caracteres a escribir
468
Tokens
144
Ritmo de tres estrellas
105 tpm

Al ritmo de tres estrellas de 105 tokens por minuto, este intento toma unos 82 segundos.

Escribe este fragmento

Paso 2 de 2 en Errores y limpieza; paso 9 de 11 en APIs, errores y pruebas.

← Anterior Siguiente →