tratamiento de cadenas de caracteres en lenguaje c

5
UPT ARAGUA FEDERICO BRITO FIGUEROADpto. 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

Upload: omar-rosales

Post on 23-Oct-2015

20 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: Tratamiento de Cadenas de Caracteres en Lenguaje c

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

Page 2: Tratamiento de Cadenas de Caracteres en Lenguaje c

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”);

Page 3: Tratamiento de Cadenas de Caracteres en Lenguaje c

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.

Page 4: Tratamiento de Cadenas de Caracteres en Lenguaje c

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();

}

Page 5: Tratamiento de Cadenas de Caracteres en Lenguaje c

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.