Ver Mensaje Individual
  #3 (permalink)  
Antiguo 15/05/2013, 16:44
amchacon
 
Fecha de Ingreso: julio-2012
Mensajes: 375
Antigüedad: 12 años, 4 meses
Puntos: 28
Respuesta: Estructura con dimensión variable en C

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ódigo C:
Ver original
  1. char nombre[] = "Texto de ejemplo";

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:

Código C:
Ver original
  1. char Nombre[2] = "ab";

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.