Eliminar un carácter de un archivo en C

¿Cómo puedo eliminar algunos caracteres de un archivo utilizando el progtwig C?

No pude encontrar ninguna función predefinida para ello.

Para comprender el propósito, estoy tratando de enviar un archivo a través de un socket, si N bytes se envían con éxito, quiero eliminar esos bytes del archivo. Al final, el archivo estará vacío. ¿Alguna otra manera de hacer esto eficientemente?

Gracias Pradeep

Si están al final, trunca el archivo a la longitud adecuada. Si no es así, tendrás que volver a escribir el archivo.

Su forma es bastante ineficiente para archivos grandes, ya que tendría que copiar “el rest del archivo” algunos bytes más al principio, lo que cuesta mucho. Preferiría registrar la “posición de envío actual” en algún lugar fuera del archivo y actualizar esa información. De esa manera, no tienes que copiar el rest del archivo tan a menudo.

No hay una forma sencilla de eliminar bytes desde el principio de un archivo. Tendrá que comenzar desde donde desea recortar el archivo y leer desde allí hasta el final del archivo, escribiendo al principio del archivo.

Podría tener más sentido simplemente rastrear cuántos bytes ya ha escrito en el archivo en otro archivo.

debe usar un índice que apunte al comienzo de los datos que aún no ha enviado. No es necesario eliminar lo que ha enviado, solo páselo, cuando envíe todo el archivo, elimínelo.

Si los caracteres son uno tras otro, ¿por qué no intentas fseek ()?