typestar

Moverse dentro de un archivo en C

fseek mueve el cursor, ftell lo reporta, rewind lo manda a casa.

#include <stdio.h>

int read_tail(const char *path, char *out, size_t n) {
    FILE *f = fopen(path, "rb");
    if (f == NULL) {
        return 0;
    }
    if (fseek(f, -(long) n, SEEK_END) != 0) {
        rewind(f);
    }
    size_t read = fread(out, 1, n, f);
    out[read] = '\0';
    long where = ftell(f);
    fclose(f);
    return where > 0;
}

Cómo funciona

  1. SEEK_SET, SEEK_CUR y SEEK_END son los orígenes.
  2. Un desplazamiento negativo desde SEEK_END lee la cola.
  3. En modo texto, buscar solo está definido para valores que ftell devolvió.

Palabras clave y builtins usados aquí

El intento, en números

Líneas
16
Caracteres a escribir
294
Tokens
111
Ritmo de tres estrellas
100 tpm

Al ritmo de tres estrellas de 100 tokens por minuto, este intento toma unos 67 segundos.

Escribe este fragmento

Paso 1 de 3 en Posicionamiento y streams; paso 9 de 12 en Archivos y E/S.

← Anterior Siguiente →