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
SEEK_SET,SEEK_CURySEEK_ENDson los orígenes.- Un desplazamiento negativo desde
SEEK_ENDlee la cola. - En modo texto, buscar solo está definido para valores que ftell devolvió.
Palabras clave y builtins usados aquí
FILENULLcharconstifintlongreturnsize_t
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.
Paso 1 de 3 en Posicionamiento y streams; paso 9 de 12 en Archivos y E/S.