[C con Clase] Error en código
Programante
programante en gmail.com
Mie Abr 25 22:35:45 CEST 2007
Omar Murray escribió:
> Hola lista:
>
> Tengo este trozo de código:
>
> ******************************************************
> printf("\nIngrese cadena de caracteres:\n--->");
> x=0;
> gets(cad);
> while (x<TAM && cad[x]!=' ' && cad[x]!='.')
> { vec[x]=cad[x];
> x++;
> }
>
vec[x] = '\0';
> printf("\nLa primer cadena es: %s\n",vec);
> ******************************************************
>
> La idea es que si cad contiene "Hola soy Omar.", el array vec tome la
> primer palabra y la imprima por pantalla, es decir "Hola".
>
> El problema es que imprime esto:
>
> Hola Hola soy Omar
> ^^^^^^^^^^^^^^^^^^^^
> Esto es el TAM del array vec (es este caso TAM = 20).
>
> Donde está el error que no lo encuentro..?
>
> Gracias y saludos.
Para saber donde acaba la palabra, las cadenas de tipo C acaban siempre
con el caracter \0. En este caso se excribe todo vec, pasando a la
siguiente memoria que en este caso coincide con cad. Como ésta si
termina en \0, no va más allá. Podría imprimir miles de bytes antes de
encontrar el \0 correspondiente.
PD: Supongo que ya sabes que ese programa es peligroso al poder
introducirle más de TAM-1 caracteres...
Más información sobre la lista de distribución Cconclase