Anexar información de texto a un archivo de texto en un lugar determinado sin sobrescribir información antigua (C)

Así que tengo un archivo txt que se ve así:

112 12.50 y 15

267 7.75 N 20

382 15.50 N 45

Se le indica al usuario dónde desea insertar una nueva ID. Mi trabajo es hacer que el progtwig escriba la nueva ID en el archivo .txt sin sobrescribir totalmente toda la información. Digamos que el usuario quería insertar la nueva ID después de 267. El usuario me dice que la nueva ID es 123, 12.34, N, 12. El archivo .txt tendría que verse así:

112 12.50 y 15

267 7.75 N 20

123 12.34 N 12

382 15.50 N 45

En el estándar C, no hay funcionalidad para insertar nuevos datos en una determinada ubicación dentro de un archivo.

Las únicas dos opciones en C simple son:

  1. Cree un archivo temporal, copie los datos del archivo antiguo hasta el punto de inserción en el archivo temporal, escriba los nuevos datos en el archivo temporal, copie el rest de los datos del archivo antiguo en el archivo temporal, cambie el nombre del archivo temporal al antiguo archivo nombre.
  2. Averigüe cuántos datos nuevos se deben insertar, mueva (copiando) todos los datos desde el punto de inserción en esa cantidad, escriba los nuevos datos en el punto de inserción.

Puede haber funciones específicas del sistema operativo para realizar la inserción de datos en una ubicación arbitraria dentro de un archivo. Pero, de nuevo, no en la biblioteca estándar de C tal como se define en el estándar de C.

La única opción que tiene para agregar información en medio de un archivo sin sobrescribir los datos antiguos es mover manualmente todos los datos siguiendo la posición en la que desea agregarlos al archivo.

pasos:

  1. Crear un archivo temporal
  2. Lee cada línea del archivo de origen y escribe en el archivo temporal, analizándolo a medida que avanzas
  3. Luego inserte la nueva línea después de que haya encontrado la ID, después de lo cual querría que se inserte la nueva línea
  4. escribe todas las líneas restantes del archivo fuente
  5. borrar el archivo fuente
  6. cambie el nombre del archivo temporal al nombre del archivo fuente.
  7. ¡celebrar!