[C con Clase] Duda

Zakariae El-Abdelouarti Alouaret shanatorio en gmail.com
Mar Mar 1 14:00:22 CET 2011


Hola Álvaro:

El 01/03/11 11:46, alvaro martin garcia escribió:
> En primer lugar, se agradecería si en el asunto mandas algo más
> descriptivo que "[C con Clase] Duda"
> En segundo lugar, el rellenar de '0' el array de chars no es necesario.
> Cuando lee por teclado, también se lee el "enter" (lo puedes preguntar
> saber preguntando si el caracter es '\0', pero no sirve de nada porque
> luego lees por teclado y se cambian esos ceros

En realidad el "enter" no es un '\0' si no un '\n' (salto de línea y 
retorno de carro), que es representado de forma diferente por diferentes 
sistemas operativos. El "enter" informa a cin de que se ha terminado la 
secuencia de entrada.

La forma correcta de referirse a '\0' es "carácter final de cadena".

> ¿Y si alguien mete por teclado un número, una mayúscula o un símbolo?
> Otro comentario que, y es más cuestión de optimización que otra cosa.
> Normalmente para el tipo de bucle que tienes, esos dos bucles seguidos
> se suelen hacer en uno solo, Aunque como lo tienes con los dos bucles es
> un pelín más rápido, bien es cierto que si tienes un código un poco más
> complejo se puede complicar a la hora de seguir tu programa si lo haces
> así, pero bueno, igualmente esa parte está bien. Aunque no estaría de
> más comprobar que el carácter que te meten está entre 'a' y 'z' (el
> switch creo que admite rangos (corregidme si me equivoco), es decir,
> puedes poner "case 'a'..'y':").
>
> Los símbolos raros es porque lo último que guarda en tu array, es el
> "enter", mientras que tú compruebas que sea igual 0, es decir, en
> "a00000", el resultado sería "a(enter)(indeterminado)"... En vez de en
> el while comprobar por si es igual a 0, deberias comprobar si es igual a
> '\0'




Más información sobre la lista de distribución Cconclase