[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