Tipo char en C
En nuestro artículo anterior vimos los tipos de datos en C y explicamos cómo se construye cada uno. El tipo de dato char es un tipo especial de entero que puede ser representado como un caracter. En este post, veremos a fondo este tipo de dato.
char
En C podemos representar un caracter con el tipo char
. Estos son llamados también character literals.
char option = 'N';
Sin embargo, un char
es en esencia un tipo entero que puede guardar números en un rango desde -127 hasta 128. Veamos el siguiente ejemplo en donde podemos ver como la letra 'a' puede ser representada en decimal, octal, y hexadecimal.
#include <stdio.h>
int main()
{
char a = 97;
printf("ASCII Char: %c\n", a);
printf("ASCII Dec: %d\n", a);
printf("ASCII Oct: %o\n", a);
printf("ASCII Hex: %x\n", a);
return 0;
}
La salida será similar a la siguiente:
ASCII Char: a
ASCII Dec: 97
ASCII Oct: 141
ASCII Hex: 61
Si bien en C no existe un tipo de dato string podemos definir una cadena de caracteres o string literal de la siguiente manera.
char greetings[] = "Hola mundo!";
Nota que debemos utilizar comilla sencilla para definir character literals y comilla doble para definir string literals. Observa el siguiente ejemplo en donde se solicita al usuario por consola que digite S ó N.
int main()
{
char choice;
printf("Digite S/N: ");
scanf("%c", &choice);
if (choice == 'S')
printf("Escogiste S\n");
else if ((choice == 'N'))
printf("Escogiste N\n");
else
printf("Escogiste algo diferente\n");
return 0;
}
Veamos este otro ejemplo en donde se solicita al usuario que digite su nombre por consola. Nota que si se digitan más de 32 caracteres se trunca la cadena!.
int main()
{
char buffer[32];
printf("Type your name: ");
fgets(buffer,32,stdin);
printf("Hello, %s",buffer);
return 0;
}
El anterior ejemplo también muestra también la forma de definir un array o matriz en C. Tema que puedes ver a más detalle en nuestro artículo Arrays en C.