Sobrescribir a una línea específica en c

Tengo un archivo de aproximadamente 2000 líneas de texto que genero en mi programa, cada línea tiene la información de un empleado y se muestra de esta manera

1 1 Isaac Fonseca 58 c 1600 1310.40 6 1 0.22 2164.80 1
2 1 Manuel Gutiérrez 22 d 1700 1523.37 4 1 0.13 897.26 1
3 1 Daniel Bernal 34 c 1600 1195.84 2 1 0.26 836.16 1
4 1 Miguel Gonzalez 43 e 1800 1195.84 0 1 0.15 0.00 1

Pero cuando edito la información de un empleado, tengo que actualizar el archivo, lo que estoy haciendo es buscar la línea e intentar reescribirla.

He visto la siguiente pregunta de alguien con el mismo problema, pero cuando intento escribir en el archivo, siempre se escribe al final del archivo.

¿Sobrescribiendo una línea específica en un archivo de texto?

Aquí está mi código:

datos = fopen(archivo,"a+");
for(i=0;i<num;i++){
    // buscar la linea
    fgets(lineaA,100,datos);
    // sobreescribir
    if(i == (num-1))
        cursor = ftell(datos);                      
}

cursor -= strlen(lineaA) - 1;
fseek(datos,cursor,SEEK_CUR);

fputs(linea2,datos);            
fclose(datos);

Respuestas a la pregunta(3)

Su respuesta a la pregunta