Bienvenidos sean a este post, hoy veremos operaciones basicas sobre char.
Hasta ahora podemos decir que los caracteres en ASCII son basicamente valores enteros y sobre ellos solo podremos hacer algunas cosas importantes, comencemos con dos de las mas basicas como son la declaracion y la asignacion:
signed char caracter;
char c1, c2, c3, c4;
unsigned char unByte;
Como mencionamos en algunos posts anteriores el tipo de dato lo identificaremos como char, la primer linea es la declaracion de un char de tipo signed, es decir que contendra un valor entre -128 y 127 (incluidos), si bien usamos la palabra signed no es necesaria dado que esta intrinseca en la declaracion, lo siguiente es igual a la anterior pero declarando varias variables al mismo tiempo, por ultimo declaramos una con la palabra unsigned, es decir que esta contendra valores de 0 a 127 (inclusive), tomemos las declaraciones anteriores y asignemos un valor a cada uno:
signed char caracter = 'A';
char c1 = 65;
char c2 = 'a';
char c3 = 97;
char c4 = '7';
unsigned char unByte = 7;
Como pueden ver separamos a las variables que declaramos juntas pero solo para entender mejor la explicaccion, comentemos cada una de ellas:
- En el primer caso le asignamos la letra A y para ello debemos usar las comillas simples (‘) y no las dobles («), ya veremos porque
- En el segundo caso pasamos el valor del caracter, en este caso es A, igual al anterior pero un poco mas dificil porque siempre sera mas facil usar el caracter que el codigo del conjunto, de todas formas el lenguaje lo convertira en base a la tabla
- En el tercer caso volvemos a asignar una letra por lo tanto repetimos lo del primer caso
- En el cuarto caso repetimos lo del segundo porque le pasamos el valor del caso anterior asi que tecnicamente es lo mismo
- En el quinto caso tenemos la primera particularidad, aqui pasamos el caracter del numero 7, es decir que tendra el valor 55 del conjunto, pero representara al numero 7 en pantalla
- El ultimo caso pasamos el valor de 7 pero en el conjunto representa a BEL y por lo tanto cuando acccedamos hara un beep en la terminal
Nota: Cuando pasamos los valores con las comillas simples son valores literales.
Para entender esto un poco mejor vamos a crear un ejemplo, para ello generen un archivo que llamaremos ejemplo19.c y le agregaremos el siguiente codigo:
ejemplo19.c
#include <stdio.h>
typedef unsigned char uchar;
void mostrarChar(char c)
{
printf("c = '%c' (%d) [%#x]\n", c, c, c);
}
int main()
{
signed char caracter = 'A';
char c1 = 65, c2 = 'a', c3 = 97, c4 = '7';
uchar unByte = 7;
mostrarChar(caracter);
mostrarChar(c1);
mostrarChar(c2);
mostrarChar(c3);
mostrarChar(c4);
mostrarChar(unByte);
return 0;
}
Este es un ejemplo simple pero aplicaremos varias cosas, primero usaremos un typedef donde definiremos un alias uchar para unsigned char, despues definimos una funcion donde mostraremos los posibles valores de un char, para ello recibiremos uno como argumento, observen que pasaremos el caracter (c), luego su valor entero (d) y por ultimo su valor hexadecimal (x), para ello usaremos los formateadores correspondientes pero para los tres casos pasamos el mismo valor, despues en el main definimos las mismas variables que vimos anteeriormente con los mismos valores, pero en esta ocasion si lo hicimos separados por comas pero de la misma forma, despues simplemente llamaremos a la funcion con cada una de las variables antes definidas como argumentos, compilemos y veamos como es su salida mediante el siguiente video
Si observan el video podran no solo ver todos los datos que nos devuelve sino que escucharemos el «beep» del caracter en el codigo ASCII, tambien ejecute otro programa para que vean que el sonido correspondie a nuestro codigo, si se fijan veran que es el unico a cual no mostrara ningun caracter porque como dijimos son solamente de control, un tema que no comentamos porque no era el momento es que podemos aplicar operadores matematicos a los char, por ejemplo tomemos el codigo anterior y modifiquemoslo de la siguiente manera:
#include <stdio.h>
typedef unsigned char uchar;
void mostrarChar(char c)
{
printf("c = '%c' (%d) [%#x]\n", c, c, c);
}
int main()
{
signed char caracter = 'A';
char c1 = 65, c2 = 'a', c3 = 97, c4 = '7';
uchar unByte = 7;
c1 += 10;
c2 -= 10;
c4 *= 2;
unByte += 90;
mostrarChar(caracter);
mostrarChar(c1);
mostrarChar(c2);
mostrarChar(c3);
mostrarChar(c4);
mostrarChar(unByte);
return 0;
}
En este caso utilizamos a los operadores complementarios para la suma, resta y multiplicacion, sobre cuatro variables, el resto del codigo sigue exactamente de la misma forma, compilemos y veamos como es su salida:
tinchicus@dbn001vrt:~/lenguajes/C$ ./prog/ejemplo19
c = 'A' (65) [0x41]
c = 'K' (75) [0x4b]
c = 'W' (87) [0x57]
c = 'a' (97) [0x61]
c = 'n' (110) [0x6e]
c = 'a' (97) [0x61]
tinchicus@dbn001vrt:~/lenguajes/C$
Como pueden observar al modifficarse el entero que indica cual es la posicion en la tabla ASCII (porque como ya mencionamos varias veces en realidad estamos trabajando con valores enteros y el lenguaje se encarga de mostrarnos el caracter) en caso de corresponder, por ultimo este codigo puede ser muy util cuando trabajemos con ASCII pero si queremos trabajar con Unicode? Aunque parezca mentira la solucion es miy simple, debemos cambiar esta linea:
void mostrarChar(char c)
De la siguiente forma:
void mostrarChar(int c)
Esto le dice al lenguaje que no debe restringuirse solamente a ASCII dado que no tendra sus limitaciones.
En resumen, hoy hemos visto como trabajar con caracteres, como es, como se comportan, como se definen, como se asignan, como podemos mostrarlos, por ultimo como podemos aplicar operaciones sobre los mismos, espero les haya sido de utilidad sigueme en tumblr, Twitter o Facebook para recibir una notificacion cada vez que subo un nuevo post en este blog, nos vemos en el proximo post.


Donación
Es para mantenimento del sitio, gracias!
$1.50
