Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Cadena de caracteres
Se describe cómo se definen las cadenas de caracteres en C como arreglos donde cada
elemento es de tipo char. Los caracteres se almacenan uno detrás del otro, y para marcar
el final de una cadena, se coloca un valor de terminación, que es cero o '\0' (el carácter
nulo, cuyo código ASCII es cero).
Inicialización:
Como cualquier arreglo, una cadena de caracteres se puede ser inicializado en el
momento de su declaración. Esta operación se realiza de la siguiente manera:
char nomb1[10] = { 72, 111, 108, 97, 0, 43, 9, 123, 10, 45}; ó
char nomb2[10] = {'H', 'o', 'l', 'a', '\0', '+', '\t', '{', '\n', 'A'};
En ambos casos se asigna a los elementos del arreglo la misma información (los
números en nomb1 equivalen a los códigos ASCCI de los caracteres que aparecen en
nomb2).
Observe que, según lo expuesto anteriormente, sólo los primeros cuatro datos
corresponden a caracteres válidos en las cadenas, ya que el quinto elemento es un 0
(cero) o un '\0', delimitadores de la cadena.
Si recordamos de los arreglos, si se colocan menos valores de inicialización que la
capacidad del arreglo, el resto de elementos del arreglo se inicializa en cero. Entonces,
si realizamos la siguinte operación:
char nomb3[10] = {'H', 'o', 'l', 'a'};
Esto signfica que: nomb3[0] ï 'H’, nomb3[1] ï 'o’, nomb3[2] ï 'l’, nomb3[3] ï 'a’,
nomb3[4] ï 0 ó '\0’, nomb3[5] ï 0 ó '\0', etc., lo que significa que la cadena está
perfectamente delimitada.
Lectura y escritura de cadenas de caracteres
El lenguaje C/C++ implementa una serie de funciones que permiten el ingreso y la
salida de cadenas de caracteres a, y desde, un programa. Empezaremos analizando las
funciones scanf y printf.
La función scanf, como lo indicamos en capítulos anteriores, permite el ingreso de datos
desde la consola. Esta misma función, empleando el especificador de formato %s,
permite el ingreso de cadenas de caracteres. Observe el siguiente ejemplo:
char nombre[20];
scanf("%s", nombre);
La función scanf también se puede emplear con punteros, sin embargo, se debe tener
especial cuidado en el setido de asegurar antes que el puntero apunte a una dirección
válida. En ese sentido, observe las siguientes instrucciones:
Un aspecto que se debe tomar en cuenta, cuando se quiere leer una cadena de caracteres
empleando scanf es que, al igual con la lectura de números, la exploración de un dato se
realiza hasta encontrar un "espacio" (entiéndase por "espacio", un carácter blanco, un
carácter de tabulación o un carácter de cambio de línea). Es por esta razón que
empleando el especificador de acceso %s en la función scanf sólo se podrán leer
palabras sueltas y no frases completas.
Conjunto de exploración %[]: Se denomina "conjunto de exploración" a una lista de
caracteres que se coloca en la cadena de formato de la función scanf y permite restringir
los caracteres que se pueden ingresar a una cadena de caracteres. Un "conjunto de
exploración" se coloca en reemplazo del %s, los caracteres que se desea permitir en el
ingreso se colocan uno a continuación del otro entre los paréntesis.