Hay muchas preguntas similares, pero nada que responda a esto específicamente después de buscar en Google bastante. Aquí va:¿Cuál es la mejor manera de truncar el comienzo de un archivo en C?
Digamos que tenemos un archivo (podría ser binarios, y mucho más grande también):
abcdefghijklmnopqrztuvwxyz
¿cuál es la mejor manera en C para "mover" un derecho más parte de este archivo a la izquierda, truncando el principio del archivo .. así, por ejemplo, "frente truncar" 7 bytes cambiaría el archivo en el disco sea:
hijklmnopqrztuvwxyz
Debo evitar los archivos temporales, y preferiría no utilizar un gran buffer para leer todo el archivo en la memoria. Un posible método que pensé es usar fopen con el indicador "rb +", y buscar y escribir constantemente para copiar bytes comenzando desde el desplazamiento al principio, luego establecer Endofarch para truncar al final. Eso parece ser una gran búsqueda (posiblemente ineficiente).
Otra forma sería abrir el mismo archivo dos veces, y usar fgetc y fputc con los punteros de archivo respectivos. ¿Esto es posible?
Si hay otras formas, me gustaría leerlas todas.
Terminé abriendo el archivo dos veces (con dos punteros FILE). Esto fue muy rápido (~ 2 mb en un abrir y cerrar de ojos; no fue un punto de referencia). Usé ftruncate() con fileno() y ftell(). – snapfractalpop