Bueno, he encontrado la solucion. House hubiese disfrutado con esto un montón. En un windows todo funcionaba pero en un UNIX(AIX) no.
Un cumulo de circunstancias han dado lugar a los siguientes sintomas raros:
1.Aparición del simbolo de fin de cadena en lugares aleatorios \0.
2.Desaparición de caracteres aleatoriamente en el fichero de salida (xml). Si desaparece el de un tag--> Fichero mal construido.
Detallo el Poltergeist que había, no lo he llegado a cazar del todo pero lo he visto

:
1. La funcion strlen (string ...) devuelve la "cantidad" de caracteres de la cadena empezando desde 1, repito desde 1.
2. El array palabra[80]. Empieza desde cero.Es decir 80 elementos empezando desde 0 ---> [0...79]
3. La cadena de inicio era: "". Inicializacion. Habia que poner algo.
Pues bien los UNIX meten \0 mientras que los windows ponen "nada", vacio.
Pues bien debido a una situacion del programa, a un bucle por en medio,el Poltergeist se me colaba (el "") entre 79-80 por poner <= en un for. En un Unix \0 y ¡BOOM!.
He arreglado esto y se ha arreglado la desaparición de caracteres. El Poltergeist ha olido que he llamado a los cazafantasmas y se ha ido de la ciudad. Si vuelve le estaremos esperando.