El carácter \0 estaría despues del último char leído, no en la posición 80.
Los carácteres basura seguramente es porque en la función agregar_caracter machacas el '\0' en la línea
Si tenías la cadena "Vuela\0" y añades el caracter 'D', lo que estas haciendo es reemplazar el \0 por la D y queda "VuelaD", lo que tendría que pasar es que añade la 'D' entre la 'a' y el '\0' para que quede "VuelaD\0"
Espero haber ayudado, saludos
Los carácteres basura seguramente es porque en la función agregar_caracter machacas el '\0' en la línea
Código [Seleccionar]
destino[longitud(destino)]=c;
Y por tanto si los siguientes bytes son basura y no son \0, los imprimira. La manera más fácil es añadir un '\0' despues de modificar la cadena.Si tenías la cadena "Vuela\0" y añades el caracter 'D', lo que estas haciendo es reemplazar el \0 por la D y queda "VuelaD", lo que tendría que pasar es que añade la 'D' entre la 'a' y el '\0' para que quede "VuelaD\0"
Espero haber ayudado, saludos