tratamiento de cadenas de caracteres en lenguaje c
TRANSCRIPT
UPT ARAGUA “FEDERICO BRITO FIGUEROA”
Dpto. de Informática
Algoritmia y Programación – PIAP112-3 Prof. Omar Rosales.
TRATAMIENTO DE CADENAS DE CARACTERES EN LENGUAJE C
1.- CADENA.
Es un tipo de datos compuesto; es un arreglo de caracteres (CHAR), terminado por
un carácter nulo (“\0”), NULL.
Una cadena o literal de cadena es “ABC”. En memoria esta consta de cuatro
elementos: „A‟, „B‟, „C‟ y „\0‟.
l a c a d e n a d e t e s t Array de Caracteres
l a c a d e n a d e t e s t \0 Cadena de Caracteres
El numero total de caracteres de una cadena en C es siempre igual a la longitud de la
cadena mas 1.
2.- INICIALIZACIÓN VARIABLE DE CADENAS.
Ejemplos:
1. Char texto[81] = “esto es una cadena”;
2. Char cadenatext[ ] = “¿ Cual es la Longitud de esta cadena ?”;
En el ejemplo 1, texto puede contener 80 caracteres más el carácter nulo (\0). En el
ejemplo 2, se declara con una especificación de tipo incompleta, por lo que se completa
con el inicializador.
Una cadena no se puede inicializar fuera de la declaración, ya que se trata como un valor de
dirección.
3.- LECTURA Y ESCRITURA DE CADENAS DE CARACTERES EN C.
FUNCION DESCRIPCIÓN
SCANF ( ) Lee una cadena de caracteres hasta encontrar un espacio en
blanco. Su código de formato es %s
GETS ( ) Lee la cadena completa incluyendo cualquier espacio en blanco.
Esta función asigna la cadena al argumento que será un arreglo
de caracteres o puntero (*char). Si hay un error en la lectura se
devuelve NULL.
GATCHAR( ) Se utiliza Para leer caracter por caracter
PUTS ( ) Escribe en la salida una cadena de caracteres
UPT ARAGUA “FEDERICO BRITO FIGUEROA”
Dpto. de Informática
Algoritmia y Programación – PIAP112-3 Prof. Omar Rosales.
PUTCHAR ( ) Escribe en la salida caracter por caracter
GETCH( ) Lee un caracter tecleado sin esperar el retorno del carro
(ENTER) sin visualizarlo.
GETCHE ( ) Lee un caracter tecleado sin esperar el retorno del carro
(ENTER), pero lo visualiza al hacerlo.
4.- FUNCIONES DE TRATAMIENTO DE CADENAS EN LA LIBRERÍA <string.h>
Algunas de ellas y las más usadas son las siguientes:
FUNCION DESCRIPCIÓN SINTAXIS
STRCAT Concatena cadenas de caracter Strcat(cadena1, cadena2):
concatena al final de cadena1 el
contenido de cadena2.
STRCPY Copia una cadena a un destino Strcpy(cadena1,cadena2)
Copia el contenido de cadena2
en cadena1.
STRLEN Devuelve la longitud de una cadena,
excluyendo el caracter nulo
Var=strlen(cadena)
Var debe ser de tipo entero
STRCMP Compara alfabéticamente 2 cadena y
devuelve:
0 si C1 = C2
< 0 si C1 < C2
> 0 si C1 > C2
Var = strcmp(cadena1,cadena2);
Var debe ser de tipo entero
STRICMP Igual al strcmp; pero sin distinguir
entre mayúscula y minúscula.
Var = stricmp(cadena1,cadena2);
Var debe ser de tipo entero
Ejemplos:
Ej.1.-
Strcpy(cad1,”ciudad”);
Strcpy(cad2,”morichal”);
strcat(cad1,cad2);
puts(cad1); /* se mostrara en pantalla ciudad morichal
tam=strlen(cad1);
printf(“le tamaño de la cadena es %d \n”,tam);
ej.2.-
gets(cad1);
gets(cad2);
comp=strcmp(cad1,cad2);
if (comp=0)
printf(“ las cadenas son iguales”);
UPT ARAGUA “FEDERICO BRITO FIGUEROA”
Dpto. de Informática
Algoritmia y Programación – PIAP112-3 Prof. Omar Rosales.
5.- FUNCIONES DE CONVERSIÓN
FUNCIÓN DESCRIPCIÓN
atoi Convierte un string a entero
itoa Convierte un entero a string
ctime Convierte fecha y hora a string
atof Convierte un string a real
gcvt - ecvt Convierte un real a un string
toupper Traslada caracteres a mayúsculas
tolower Traslada caracteres a minúscula.
6.- FUNCIONES DE COMPARACIÓN.
FUNCIÓN DESCRIPCIÓN
isupper Si es una letra mayúscula (A-Z)
ísspace Si es un espacio en blanco
islower Si es una letra minúscula (a – z)
isdigit Si es un digito ( 0 – 9)
isalpha Si es una letra (a – z, A – Z)
isalnum Si es alfanumérico
7.- FUNCION malloc ( )
Permite reservar un bloque de memoria cuyo tamaño es el número de bytes pasados
como argumento.
Sintaxis:
Puntero = malloc(tamaño de bytes);
ó
tipo *puntero
puntero = (tipo*)malloc(tamaño de bytes);
8.- FUNCIÓN sizeof
Da como resultado el numero de bytes que ocupa un tipo de datos, variable o estructura,
que se proporciona como argumento.
UPT ARAGUA “FEDERICO BRITO FIGUEROA”
Dpto. de Informática
Algoritmia y Programación – PIAP112-3 Prof. Omar Rosales.
Ejemplo de malloc y sizeof
Int *ip
ip = (int*) malloc (100 * sizeof (int) );
En este ejemplo se intenta obtener como total de bytes, el producto de 100 por el numero de
byte que ocupa un tipo de dato entero, y asignarlo o reservarlo a la dirección de inicio de ip.
9.- EJERCICIOS RESUELTOS.
a) Se desea leer por teclado los N códigos de asignatura de la carrera de informática.
Escriba en C un modulo para realizar este proceso. Nota cada asignatura tiene un
código de 6 caracteres alfanuméricos.
#incluye <stdio.h>
#incluye <string.h>
#incluye <conio.h>
#define n=10
main()
{
int I;
char asignatura[n][21], codigo[n][7];
for (i=0; i<=n; i++)
{
printf(“\n escriba el nombre de la material: “);
gets(asignatura[i]);
printf(“\n escriba el código de la asignatura: “;
gets(codigo[I]);
}
getch();
}
UPT ARAGUA “FEDERICO BRITO FIGUEROA”
Dpto. de Informática
Algoritmia y Programación – PIAP112-3 Prof. Omar Rosales.
b) definir un arreglos de cadenas de caracteres para poder leer un texto compuesto por un
máximo de 80 líneas.
#incluye <stdio.h>
#incluye <string.h>
#incluye <conio.h>
#define n=10
main()
{
int i, nlineas;
char buffer[80];
char *texto[80];
do
{
printf(“numero de lineas”);
scanf(“%d”,&nlineas);
}
while (alineas > 80);
texto=(char*) malloc (alineas * sizeof(char*));
for (i = 0; i < nlineas; i++)
{
gets(buffer);
texto[i]=(char*) malloc ( (strlen(buffer)+1) * sizeof(char*));
strcpy (texto[i],buffer);
}
getch();
}
10.- EJERCICIOS PROPUESTOS.
A) Se tiene un texto formado por un máximo de 30 líneas, del cual se quiere saber el
numero de apariciones de una palabra CLAVE a buscar. Escriba un programa que
lea el texto y la palabra CLAVE a buscar y determine el numero de apariciones de
la misma en el texto.
B) Escribir un programa que lea un texto de cómo máximo 60 líneas, cada línea con
un máximo de 80 caracteres. Una vez leído el texto intercambiar la línea de mayor
longitud por la línea de menor longitud.