Creo que es evidente que no puedes guardar una cadena de caracteres en una unica variable char (hasta ahí llegamos).
Ahora bien, has declarado char nombre[2]; puedes pensar que con eso puedes guardar 2 letras. Falso, solo puedes disponer de 1 letra. Cuanto tu realizas la siguiente asignación:
C automáticamente añade un elemento "adicional" al final. Se le conoce como el caracter nulo '\0'
El caracter nulo sirve para determinar el final de la cadena, una cadena sin '\0' al final no puede mostrarse puesto que el programa seguiría mostrando hasta el infinito.
Volviendo pues al ejemplo anterior:
Estás dejando sin espacio para el caracter nulo. Las consecuencias son imprebisibles. Hay dos maneras fáciles de solucionarlo:
- Hacer el array más grande (char Nombre[256];)
- Cambiar el array por puntero (char* Nombre). Este metodo tiene el problema de que no puedes modificar los datos una vez asignados.