CUESTIONARIO CADENA DE CARACTERES
1. ¿Qué diferencia existe entre cadena de texto y arreglo de caracteres?
Una cadena de caracteres podría verse como un conjunto de caracteres (numero, letras, símbolos de código ascii) ordenados. La diferencia es que, en una cadena de caracteres, al final de la cadena, el procesador automáticamente coloca un carácter especial conocido como el carácter nulo y representado por el símbolo ‘\0’. De esta forma, el procesador puede usar sólo 19 elementos del arreglo para los caracteres y usará el último elemento para el carácter nulo.
Las cadenas de caracteres nos permiten comparar entre una cadena de caracteres y otra, lo cual nos hace más fácil manipular datos de tipo texto.
2. ¿Cuál es la declaración de una cadena de texto?
char nombre_del_arreglo[numero_máximo_de_caracteres + 1];
Se escribe primero el tipo de la cadena, seguido por el nombre del arreglo y entre corchetes el número máximo que se utilizara (el programador lo decide) más uno que sería el espacio para el carácter nulo que lo distingue como cadena de caracteres.
3. ¿Cómo se realiza la lectura de cadenas de texto?
Para hacer la lectura de una cadena de caracteres se pueden utilizar la función scanf o gets de la siguiente forma:
scanf("%s",cadena); o gets(cadena);
La ventaja de utilizar el gets en lugar del scanf es la lectura de los espacios en blanco, cosa que no hace el scanf.
También existen otras funciones que podemos utilizar como las siguientes.
4. Definición y ejemplos.
a. cin.getline(cadena, tamaño, carácter)
Esta función requiere de 3 datos o parámetros: nombre, longitud y carácter de fin.
Nombre: nombre de la variable que va a contener la cadena.
Longitud: la cantidad de caracteres que se podrán introducir en la cadena.
Carácter de fin: carácter que el usuario usara al final de la cadena.
Por ejemplo:
Si se tiene un arreglo char de 300 elementos llamado str (nuestra cadena) y queremos pedirle al usuario que la llene, la función cin.getline quedaría de la siguiente manera:
Cin.getline(str,300, ‘\n’);
b. cin.get()
Sirve para leer un carácter del flujo de entrada. Esta función cin.get(letra) lee un carácter y lo guarda en letra. Devuelve 0 si el carácter leído es final de archivo. En otro caso devuelve 1.
char letra ;
bool fin;
fin = cin.get( letra );
if (fin == 0)
cout << "fin de archivo";
c. cin.ignore
Sirve para leer uno o más caracteres sin procesar del flujo de entrada.
d. gets(
Tipo void y se utiliza con la librería stdio.h. Sirve para leer una línea desde el archivo de entrada. Lee hasta que encuentra un salto de línea. Se llama a ésta función con el nombre de la variable donde queremos guardar la cadena leída.
char nombre[20] ;
…
gets( nombre );
...
Esta función se utiliza para almacenar texto en su mayoría, aunque no se pueden hacer comparaciones de su contenido, solo se almacena hasta que se dé una nueva línea.
e. getch()
Sirve para leer un carácter del flujo de entrada sin que aparezca en pantalla. Se la llama sin argumentos y devuelve un entero. Se utiliza con la librería conio.h
char letra ;
…
letra = getch();
if (letra == ‘S’)
cout << ”Ha elegido seguir";
f. getchar()
Sirve para leer el siguiente carácter del flujo de entrada. Se la llama sin argumentos y devuelve un entero. Esta función se utiliza con la librería stdio.h
void main()
char letra ;
bool seguir = true;
while (seguir)
{
letra = getchar();
if (letra == '\n')
{
cout << "fin de línea";
seguir = false;
}
Else
cout << letra;
}
getch();
}
Las funciones gets y getchar estas especializadas en la captura de un solo carácter. La diferencia es que getchar lee un carácter y lo imprime en pantalla y el getch lo lee pero no lo muestra en pantalla. Por lo que estas se utilizan para leer un solo carácter y retener pantallas.
Otras funciones son:
strlen
La función strlen recibe como argumento una cadena y da como valor de regreso un entero que corresponde al número de caracteres de la cadena (sin contar al carácter nulo). Por ejemplo, en el caso siguiente:
char nombre[10]=”Karla”;
int x;
x = strlen(nombre);
La variable x tendría un valor de 5 luego que se ejecutan las sentencias.
strcpy(cadena2,cadena1):
La función strcpy es una función sin valor de regreso que recibe dos argumentos. Un argumento es la variable cuyo valor se desea asignar y la otra es la cadena de caracteres que se desea asignar. Por ejemplo. Las siguientes dos asignaciones son correctas:
char nombre[20];
strcpy(nombre, “Carlos”);
también puede escribirse:
char nombre1[20], nombre2[20]=”Carlos”;
strcpy(nombre1,nombre2);
strcmp(cadena1,cadena2)
strcmp(cadena1,cadena2)
Esta función recibe dos argumentos, que son las dos cadenas a comparar, y regresa un valor de tipo entero. Por ejemplo, para las mismas declaraciones de nombre1 y nombre2.
nom = strcmp(nombre1, nombre2);
Es una sentencia correcta si nom es de tipo entero. El valor que regresa la función strcmp es 0 si las dos cadenas son iguales. Regresa 1 si la primera cadena es mayor a la segunda y regresa –1 si la segunda cadena es mayor a la primera. Aquí, ser mayor no significa tener más caracteres, sino la comparación se hace considerando el número de código ascii de los caracteres. La comparación se hace uno a uno hasta que se encuentre un carácter diferente entre las dos cadenas.
strcat (cadenadestino, cadena origen)
La función strcat recibe como argumentos dos cadenas y da como resultado la unión de ambas cadenas en el orden indicado. La segunda cadena se anexa a la primera cadena. Por ejemplo, las siguientes sentencias:
char nombre[20]=”Pedro ”, apellido[10]=”Burgos”;
strcat(nombre, apellido);
Cambia el valor de la cadena nombre de “Pedro” a “Pedro Burgos”.
La librería adecuada para manipular cadenas es string.h que debe incluirse en la programación principal junto con las demás librerías de la siguiente manera.
#include<string.h>
Información extraída de:


No hay comentarios:
Publicar un comentario