Sei sulla pagina 1di 29

Cadenas de caracteres

1. Definicin 2. Funciones para manejo de cadenas

Cadenas de Caracteres

Una cadena en C es un conjunto de caracteres, o valores de tipo "char", terminados con el carcter nulo (\0). Internamente se almacenan en posiciones consecutivas de memoria.

Programacin 1

Como se declaran las Cadenas de Caracteres

Las cadenas de caracteres se declaran como vectores de tipo char. char cadena[5]; //cadena de caracteres
0 1 2 3 4 \0

Programacin 1

Cadenas de Caracteres
Las cadenas de caracteres se declaran como vectores de tipo char. char cadena[100]; //cadena de caracteres El acceso a los elementos (letras) de una cadena de caracteres es anlogo al acceso en el caso de vectores de nmeros: cadena[7]='F'; // hacemos referencia al carcter que ocupa la posicin 8

Programacin 1

Como acceder a los elementos de una cadena


El acceso a los elementos (letras) de una cadena de caracteres es anlogo al acceso en el caso de vectores de nmeros: cadena[2]=L'; // hacemos referencia al carcter que ocupa la posicin 3

Programacin 1

Como identificar el fin de una cadena


Las cadenas de caracteres utilizan un caracter especial (el caracter nulo, que se escribe '\0') para indicar el final de la cadena. cadena[0]='H'; cadena[1]='o'; cadena[2]='l'; cadena[3]='a'; cadena[4]='\0'; En cualquier momento se puede conocer la longitud de una cadena mediante un bucle while que busque el caracter '\0.
Programacin 1

Como asignar valores a una cadena


La manera correcta de asignar una cadena es: char cadena[5]; cadena [0] = 'H'; cadena [1] = 'O'; cadena [2] = 'L'; cadena [3] = 'A'; cadena [4] = '\000'; O bien: char cadena[5]=Hola;
Programacin 1

Funcin para lectura de cadenas

Funcin gets gets(char *s ) Lee caracteres desde el teclado, incluyendo los espacios hasta que encuentra un ENTER. El ENTER es reemplazado por un carcter nulo y el string resultante es colocado en la direccin indicada por s. Retorna s.

Programacin 1

Funcin para escritura de cadenas

Funcin puts puts( char *s ) Escribe un string hacia la pantalla. Luego de impreso el string agrega automticamente un \n. Solo es aplicable a variables del tipo string.

Programacin 1

Funciones para el manejo de cadenas

La funciones que veremos a continuacin se encuentran en la librera string.h

Programacin 1

Copiar cadenas
char s[20] = "ab"; char s2[20]; strcpy (s2, s); Permite copiar una cadena a otra. Un error muy frecuente es intentar copiar con el operador de asignacin (s2 = s;). Esto no es vlido, pues en C no est permitido copiar vectores
Programacin 1

Funcin strcpy
char *strcpy( char *destino , char *origen ) Copia los caracteres situados a partir de origen en destino hasta encontrar el '\0' que se incluye en la copia. Devuelve la cadena destino.

Programacin 1

Funcin strncpy
char *strncpy(char *origen, int n ) *destino, char

Copia n caracteres del string "origen" , NO incluyendo el carcter nulo, si la cantidad de caracteres copiada es menor que strlen(origen) + 1, en la direccin apuntada por "destino". n es un nmero entero y deber ser menor que la memoria reservada y apuntada por destino.
Programacin 1

Ejemplo de strncpy
char strorigen[] = "0123456789" ; char strdestino[] = "ABCDEFGHIJ" ;

strncpy( strdestino , strorigen , 5 ) ;

Los strings quedaran, luego de la copia: strdestino[] == 0 , 1 , 2 , 3 , 4 , F , G , H , I , J , \0


Programacin 1

Longitud de una cadena

Funcin strlen int strlen(char *s ) Retorna un entero con la cantidad de caracteres del string. No toma en cuenta al \0. Por lo que la memoria real necesaria para albergar al string es 1+strlen(s).

Programacin 1

Concatenar cadenas
Funcin strcat char *strcat( char *destino , char *origen ) Agrega el contenido de "origen" al final del string inicializado "destino", devolviendo destino.

Programacin 1

Ejemplos de concatenar cadenas

char p[20] ; char q[10] = "123456789" ; char w[3] = "AB" ; char y[20] = "AB" ; strcat( y , q ) ; /* Correcto , el contenido de y ser: A,B,1,2,3,4,5,6,7,8,9,\0 */

Programacin 1

Ejemplos de concatenar cadenas strcat( p , q ) ; /* Error ! p no ha sido inicializado por lo que la funcin no encuentra el NULL para empezar a agregar. strcat( w , q ) ; /* Error ! w solo tiene 3 caracteres, por lo el resultado final ser: w= A,B,1 sin la terminacin del NULL por lo que una prxima operacin que se haga utilizando este array, como string, fallar rotundamente.
Programacin 1

Comparacin cadenas
Funcin strcmp int strcmp( char *s1 , char *s2 ) Retorna un entero, cuyo valor depende del resultado de la comparacin: < 0 si s1 es menor que s2 == 0 si s1 es igual a s2 >0 si s1 es mayor que s2. La comparacin se realiza caracter a caracter , y devuelve el resultado de la realizada entre los primeros dos que sean distintos.
Programacin 1

Buscar un carcter en una cadena Funcin strchr char *strchr(char *s1 , int c) Retorna un puntero, a la posicin del caracter dentro del string, si lo encuentra, en su defecto NULL. La funcin recorre el string desde el inicio, por lo que marcar la primera aparicin del caracter en l. El carcter nulo es considerado como parte del string.

Programacin 1

Buscar una cadena dentro de otra

Funcin strstr char *strstr(char *s1 , char *s2 ) Encuentra la primera ocurrencia de s2 en s1 y devuelve el resto de s1 a partir de dicha posicin. Si s2 no es parte de s1 devuelve NULL.

Programacin 1

Modificacin de cadenas

Funciones strlwr y strupr char *strlwr( char *s1 ) char *strupr( char *s1 ) Convierte respectivamente los caracteres comprendidos entre a y z a minsculas maysculas.
Programacin 1

Conversin entre cadenas y nmeros int isalnum( int c ) int isalpha( int c ) int isdigit( int c ) int islower( int c ) int isupper( int c ) Retorna CIERTO (distinto de cero) si el caracter enviado como argumento cae dentro de la categora fijada para la comparacin y FALSO (cero) en caso contrario.
Programacin 1

Conversin entre cadenas y nmeros

Retorna CIERTO si c es: isalnum(c) Si es alfanumrico (letras nmeros) isalpha(c) Si es alfabtico, mayscula minscula. islower(c) Si es un caracter alfabtico en minscula.

Programacin 1

Conversin entre cadenas y nmeros

Retorna CIERTO si c es: isupper(c) Si es un caracter alfabtico en mayscula. isdigit(c) Si es un comprendido entre 0 y 9 nmero

Programacin 1

Conversin entre cadenas y nmeros

int atoi( const char *s ) long atol( const char *s ) double atof( const char *s )
Convierte el string apuntado por s a un nmero. atoi() retorna un entero, atol() un long y atof() un double.
Programacin 1

Ejemplos de Uso de funciones de Cadenas de caracteres

Programacin 1

Ejercicio 1
Escriba un programa que permita leer una cadena, que puede contener letras y dgitos, y luego nos determine la cantidad de dgitos contenidos en la cadena.

Programacin 1

Ejercicio 2
Escriba un programa que permita leer una cadena de caracteres y que luego nos determine e imprima la cantidad de palabras que contiene la cadena.

Programacin 1

Potrebbero piacerti anche