¿De qué no tienes NPI? Su código lo que hace es:
- Recorre la cadena caracter a caracter
- Si el caracter actual es una letra minúscula y el anterior un espacio en blanco (principio de palabra), lo convierte a mayúscula.
- Si el caracter actual es una letra mayúscula y el anterior no es un espacio en blanco (mitad de palabra), lo convierte a minúscula,
La conversión minúscula<->mayúscula se basa en que unas y otras están separadas por 32 caracteres.
Lo que yo no sabía, es que esto último -la separación por 32 caracteres- era válido también para caracteres acentuados y ñ. Yo creía que el tipo de datos Char seguía el orden de los caracteres ASCII.
// Saludos