Las cadenas de caracteres se definen como un arreglo de
datos de tipo caracter el cual termina con el carcter nulo.
Un arreglo es un grupo de datos homogeneos y finitos que
ocupan posiciones consecutivas de memoria.
La declaración de una cadena de caracteres se hace de la
siguiente forma:
char Nombre_de_la_variable [longitud de la cadena];
Esto hace que se guarde un espacio en memoria suficiente
para soportar el numero de caracteres que se estan apartando para la cadena de
caracteres que se va a leer.
Por ejemplo:
char cadena[10];
crea un espacio en memoria para 10 bytes cada uno de los
cuales sera ocupado por uno de los caracteres que se van a leer.
Lectura de una cadena de caracteres:
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.
Otra forma de leer una cadena de caracteres es hacerlo
caracter por caracter como un arreglo unidimensional o vector, manejandola
posicion por posicion cadena[posicion], mas adelante se vera un ejemplo de lo
antes mencionado.
Ejemplos:
/* MANIPULACION DE UNA CADENA DE CARACTERES POSICION POR POSICION, MANEJANDOLA COMO UN
ARREGLO DE CARCTERES */
#include<conio.h>
#include<stdio.h>
void
main(void)
{
char cadena[25];
int pos;
clrscr();
//Lectura de la
cadena de caracteres.
gotoxy(20,1);
printf("Teclea una cadena de maximo 25 caracteres");
gotoxy(27,2);
printf("[ ]");
gotoxy(28,2);
gets(cadena);
//Impresi¢n
de la cadena caracter por caracter
clrscr();
for
(pos=0;cadena[pos];pos++)
{gotoxy(pos+1,pos+1);
textcolor(pos+1);
cprintf("%c",cadena[pos]);
}
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)
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