[C con Clase] Caracteres..?
Steven R. Davidson
vze266ft en verizon.net
Jue Nov 23 08:54:09 CET 2006
Hola Yudenis,
Yudenis Martínez Abreu wrote:
> Hola.
>
>
>
> Trabajando en modo consola quiero saber 2 cosas:
>
> 1-Declaro un arreglo
>
> char numero[10]="hola";
>
> Como puedo reconocer los caracteres que están por encima de del
> elemento 3(considerando el cero) o lo que es lo mismo los que están
> después de la a.
>
La respuesta es que no se puede tal y como has planteado la pregunta.
Los caracteres no tienen más información que los códigos ASCII. No
existen caracteres "válidos" e "inválidos".
Para hacer lo que propones, tendrás que averiguar dónde está el primer
carácter nulo, '\0', en la cadena. Antes del primer carácter nulo, los
caracteres pertenecen a la cadena, y cualesquier caracteres que te
encuentres posteriores al primer carácter nulo son "inválidos" y se
condideran "basura".
> Haciendo
>
> if (numero[6]= =' ') // dentro hay un espacio
> cout<<"verdadero";
> else
>
> cout<<"false";
>
> siempre escribe false y si pongo '' me dice: empty character constant,
> por lo que no termina de compilar.
>
No existe el carácter literal '', por eso el compilador te lanza un aviso.
>
>
> 2-Si declaro
>
> char numero[10];
>
> y leo desde el teclado: Hola
>
> cuando lo imprimo en pantalla recorro el arreglo completo para imprimir
> caracter a caracter porque no se el tamaño de lo que se entro o mejor no
> se la cantidad de caracteres que tiene lo que entró el "usuario" por
> tanto después de Hola escribe una cantidad de caracteres dados por
> defecto que no quiero que salgan. Como los elimino?
>
Bueno, esos caracteres no son "por defecto", sino que son "basura", ya
que están en memoria y tu programa los intenta leer.
Como ya he explicado antes, recorre la cadena hasta llegar al primer
carácter nulo, el cual indica el final de la información; o sea, el
final de la cadena.
En la práctica, no es necesario recorrer todos los caracteres, si
pretendes imprimir la cadena en la consola, ya que puedes usar 'cout <<'
para ello. Por ejemplo,
cin >> numero;
cout << "El numero es: " << numero << endl;
Espero haber aclarado las dudas.
Steven
Más información sobre la lista de distribución Cconclase