Sie sind auf Seite 1von 29

Algoritmos y Estructuras De Datos

UTN-FRSF | AEDD 2011 | Cadenas 1/29

ESTRUCTURAS DE DATOS:
Cadenas de Caracteres

UTN-FRSF | AEDD 2011 | Cadenas

2/29

ESTRUCTURAS DE DATOS
Simples o bsicos: caracteres, reales, flotantes. Estructurados: coleccin de valores relacionados. Se caracterizan por el tipo de dato de sus elementos, la forma de almacenamiento y la forma de acceso.

Estructuras estticas: Su tamao en memoria se mantiene inalterable durante la ejecucin del programa, y ocupan posiciones fijas. ARREGLOS - CADENAS - ESTRUCTURAS

Estructuras dinmicas: Su tamao vara durante el programa y no ocupan posiciones fijas. LISTAS - PILAS - COLAS - ARBOLES - GRAFOS

UTN-FRSF | AEDD 2011 | Cadenas

3/29

CARACTERES Y CADENAS: Fundamentos


Caracteres: Constante de carcter:

Un valor int representado como un caracter entre comillas simples 'z' representa el valor entero de z

Cadenas: Series de caracteres tratados como una unidad


Pueden incluir letras, dgitos y caracteres especiales (*, /, $) Representadas entre comillas dobles, por ejemplo "Hola" Terminan siempre en un carcter nulo (\0) Las cadenas pueden ser llamadas tambin strings.
UTN-FRSF | AEDD 2011 | Cadenas 4/29

Declaracin de Cadenas
Se declaran como un arreglo de caracteres

char color[ ] = "azul"; char color[5] = "azul";

Tambin se pueden declarar como una variable de tipo char *

char *colorPtr = "azul";

Finalizan con '\0' Son un puntero al primer caracter


color

a
0

z
1

u
2

l
3

\0
4

color tiene 5 elementos


UTN-FRSF | AEDD 2011 | Cadenas 5/29

Entrada / salida de cadenas


Ingreso de cadenas scanf("%s", palabra);

Copia lo ingresado por teclado en palabra[ ] No se necesita & (porque una cadena es un puntero a una direccin de memoria)

Recuerde dejar lugar en el arreglo para '\0'

UTN-FRSF | AEDD 2011 | Cadenas

6/29

Entrada / salida de cadenas


Salida de cadenas printf(La cadena leda es %s", palabra);

Muestra por pantalla el contenido de palabra[ ]


La cadena leda es hola

Para mostrar una cadena carcter a carcter: i = 0; while (palabra[i] != \0) { printf(%c n, palabra[i]); i++; }
h o l a
UTN-FRSF | AEDD 2011 | Cadenas 7/29

Librera de manejo de Caracteres: ctype.h

UTN-FRSF | AEDD 2011 | Cadenas

8/29

Funciones de Conversin de Cadenas


En <stdlib.h> (librera de utilidades generales) Convierte cadenas de dgitos a valores enteros y de punto flotante.
Prototipo de Funcin
double atof( const char *nPtr ); int atoi( const char *nPtr ); long atol( const char *nPtr ); double strtod( const char *nPtr, char **endPtr ); long strtol( const char *nPtr, char **endPtr, int base ); unsigned long strtoul( const char *nPtr, char **endPtr, int base );

Descripcin
Convierte el string nPtr a doble. Convierte el string nPtr a int. Convierte el string nPtr a long int. Convierte el string nPtr a double. Convierte el string nPtr a long. Convierte el string nPtr a unsigned long.

UTN-FRSF | AEDD 2011 | Cadenas

9/29

Funciones de Conversin de Cadenas

UTN-FRSF | AEDD 2011 | Cadenas

10/29

Funciones de Conversin de Cadenas

UTN-FRSF | AEDD 2011 | Cadenas

11/29

E/S de Caracteres y Cadenas


Funciones en <stdio.h> Para manejar caracteres y cadenas.

UTN-FRSF | AEDD 2011 | Cadenas

12/29

E/S de Caracteres y Cadenas


gets() es la forma ms fcil de leer una cadena.
Tiene un comportamiento similar a la lectura implementada con getchar() en este ejemplo:

UTN-FRSF | AEDD 2011 | Cadenas

13/29

Librera de Manejo de Cadenas


string.h: Operaciones varias sobre cadenas.

Prototipo
char *strcpy( char *s1, const char *s2 ) char *strncpy( char *s1, const char *s2, size_t n ) char *strcat( char *s1, const char *s2 )

Descripcin
Copia el string s2 en el arreglo s1. Se retorna el valor de s1.

Copia como mximo n caracteres del string s2 en el arreglo s1. Se retorna el valor de s1. Agrega el string s2 al arreglo s1. El primer carcter de s2 sobreescribe el carcter de terminacin NULL de s1. Se retorna el valor de s1. char *strncat( char *s1, Agrega como mximo n caracteres del string 2 al arreglo s1. El primer carcter de const char *s2, size_t n s2 sobreescribe el carcter de terminacin NULL de s1. Se retorna el valor de s1. )

UTN-FRSF | AEDD 2011 | Cadenas

14/29

strcpy y strncpy

UTN-FRSF | AEDD 2011 | Cadenas

15/29

strcat y strncat

UTN-FRSF | AEDD 2011 | Cadenas

16/29

Comparacin de cadenas
int strcmp(const char *s1, const char *s2)
Compara el string s1 con el s2 Retorna un: nmero negativo, si s1 < s2, Cero, si s1 == s2 un nmero positivo, si s1 > s2

int strncmp(const char *s1, const char *s2, size_t n)


Compara n caracteres de los strings s1 y s2 Retorna un valor de la misma forma que strcmp

UTN-FRSF | AEDD 2011 | Cadenas

17/29

strcmp y strncmp

UTN-FRSF | AEDD 2011 | Cadenas

18/29

Bsqueda de Cadenas
string.h: Operaciones varias sobre cadenas (strings)

UTN-FRSF | AEDD 2011 | Cadenas

19/29

Bsqueda de Cadenas
string.h: Operaciones varias sobre cadenas (strings)

UTN-FRSF | AEDD 2011 | Cadenas

20/29

Bsqueda de Cadenas
Uso de strchr

UTN-FRSF | AEDD 2011 | Cadenas

21/29

Bsqueda de Cadenas: strcspn

UTN-FRSF | AEDD 2011 | Cadenas

22/29

Bsqueda de Cadenas

UTN-FRSF | AEDD 2011 | Cadenas

23/29

Bsqueda de Cadenas
Uso de strrchr

UTN-FRSF | AEDD 2011 | Cadenas

24/29

Bsqueda de Cadenas

UTN-FRSF | AEDD 2011 | Cadenas

25/29

Bsqueda de Cadenas

UTN-FRSF | AEDD 2011 | Cadenas

26/29

Bsqueda de Cadenas

UTN-FRSF | AEDD 2011 | Cadenas

27/29

Bsqueda de Cadenas

UTN-FRSF | AEDD 2011 | Cadenas

28/29

Longitud de una Cadena

size_t strlen( const char *s );


Retorna el nmero de caracteres que contiene el string s (antes de NULL)

UTN-FRSF | AEDD 2011 | Cadenas

29/29

Das könnte Ihnen auch gefallen