Capitulo 8 Cadenas

17,615 views

Published on

Published in: Travel, Technology
0 Comments
2 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
17,615
On SlideShare
0
From Embeds
0
Number of Embeds
2,186
Actions
Shares
0
Downloads
283
Comments
0
Likes
2
Embeds 0
No embeds

No notes for slide

Capitulo 8 Cadenas

  1. 1. PROGRAMACI ÓN 1 María Hilda Bermejo Ríos Victor Parasi Falcón William Bravo García Oscar Gómez Marco
  2. 2. Cadenas de caracteres <ul><li>1. Definición </li></ul><ul><li>2. Funciones para manejo de cadenas </li></ul>
  3. 3. Una cadena en C es un conjunto de caracteres, o valores de tipo &quot;char&quot;, terminados con el carácter nulo (). Internamente se almacenan en posiciones consecutivas de memoria. Cadenas de Caracteres
  4. 4. Las cadenas de caracteres se declaran como vectores de tipo char. char cadena[5]; //cadena de caracteres Como se declaran las Cadenas de Caracteres H O L A 0 1 2 3 4
  5. 5. 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 análogo al acceso en el caso de vectores de números: cadena[7]='F'; // hacemos referencia al carácter que ocupa la posición 8 Cadenas de Caracteres
  6. 6. El acceso a los elementos (letras) de una cadena de caracteres es análogo al acceso en el caso de vectores de números: cadena[2]=‘L'; // hacemos referencia al carácter que ocupa la posición 3 Como acceder a los elementos de una cadena
  7. 7. Las cadenas de caracteres utilizan un caracter especial (el caracter nulo, que se escribe '') para indicar el final de la cadena. cadena[0]='H'; cadena[1]='o'; cadena[2]='l'; cadena[3]='a'; cadena[4]=''; En cualquier momento se puede conocer la longitud de una cadena mediante un bucle while que busque el caracter '‘. Como identificar el fin de una cadena
  8. 8. 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] = '00'; O bien: char cadena[5]=”Hola”; Como asignar valores a una cadena
  9. 9. Función para lectura de cadenas Función gets gets(char *s ) Lee caracteres desde el teclado, incluyendo los espacios hasta que encuentra un ENTER. El ENTER es reemplazado por un carácter nulo y el string resultante es colocado en la dirección indicada por s. Retorna s.
  10. 10. Función para escritura de cadenas Función puts puts( char *s ) Escribe un string hacia la pantalla. Luego de impreso el string agrega automáticamente un . Solo es aplicable a variables del tipo string.
  11. 11. Funciones para el manejo de cadenas La funciones que veremos a continuación se encuentran en la librería string.h
  12. 12. Copiar cadenas char s[20] = &quot;ab&quot;; char s2[20]; strcpy (s2, s); Permite copiar una cadena a otra. Un error muy frecuente es intentar copiar con el operador de asignación (s2 = s;). Esto no es válido, pues en C no está permitido copiar vectores
  13. 13. Función strcpy char *strcpy( char *destino , char *origen ) Copia los caracteres situados a partir de origen en destino hasta encontrar el '' que se incluye en la copia. Devuelve la cadena destino.
  14. 14. Función strncpy char *strncpy(char *destino, char *origen, int n ) Copia n caracteres del string &quot;origen&quot; , NO incluyendo el carácter nulo, si la cantidad de caracteres copiada es menor que strlen(origen) + 1, en la dirección apuntada por &quot;destino&quot;. n es un número entero y deberá ser menor que la memoria reservada y apuntada por destino.
  15. 15. Ejemplo de strncpy char strorigen[] = &quot;0123456789&quot; ; char strdestino[] = &quot;ABCDEFGHIJ&quot; ; strncpy( strdestino , strorigen , 5 ) ; Los strings quedarían, luego de la copia: strdestino[] == 0 , 1 , 2 , 3 , 4 , F , G , H , I , J ,
  16. 16. Longitud de una cadena Función strlen int strlen(char *s ) Retorna un entero con la cantidad de caracteres del string. No toma en cuenta al ‘’. Por lo que la memoria real necesaria para albergar al string es 1+strlen(s).
  17. 17. Concatenar cadenas Función strcat char *strcat( char *destino , char *origen ) Agrega el contenido de &quot;origen&quot; al final del string inicializado &quot;destino&quot;, devolviendo destino.
  18. 18. Ejemplos de concatenar cadenas char p[20] ; char q[10] = &quot;123456789&quot; ; char w[3] = &quot;AB&quot; ; char y[20] = &quot;AB&quot; ; strcat( y , q ) ; /* Correcto , el contenido de y será: A,B,1,2,3,4,5,6,7,8,9, */
  19. 19. Ejemplos de concatenar cadenas strcat( p , q ) ; /* Error ! p no ha sido inicializado por lo que la función 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 terminación del NULL por lo que una próxima operación que se haga utilizando este array, como string, fallará rotundamente.
  20. 20. Comparación cadenas Función strcmp int strcmp( char *s1 , char *s2 ) Retorna un entero, cuyo valor depende del resultado de la comparación: < 0 si s1 es menor que s2 == 0 si s1 es igual a s2 >0 si s1 es mayor que s2. La comparación se realiza caracter a caracter , y devuelve el resultado de la realizada entre los primeros dos que sean distintos.
  21. 21. Buscar un carácter en una cadena Función strchr char *strchr(char *s1 , int c) Retorna un puntero, a la posición del caracter dentro del string, si lo encuentra, ó en su defecto NULL. La función recorre el string desde el inicio, por lo que marcará la primera aparición del caracter en él. El carácter nulo es considerado como parte del string.
  22. 22. Buscar una cadena dentro de otra Función strstr char *strstr(char *s1 , char *s2 ) Encuentra la primera ocurrencia de s1 en s2 y devuelve el resto de s2 a partir de dicha posición. Si s1 no es parte de s2 devuelve NULL.
  23. 23. Modificación de cadenas Funciones strlwr y strupr char *strlwr( char *s1 ) char *strupr( char *s1 ) Convierte respectivamente los caracteres comprendidos entre a y z a minúsculas ó mayúsculas.
  24. 24. Conversión entre cadenas y números 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 categoría fijada para la comparación y FALSO (cero) en caso contrario.
  25. 25. Conversión entre cadenas y números Retorna CIERTO si c es: isalnum(c) Si es alfanumérico (letras ó números) isalpha(c) Si es alfabético, mayúscula ó minúscula. islower(c) Si es un caracter alfabético en minúscula.
  26. 26. Conversión entre cadenas y números Retorna CIERTO si c es: isupper(c) Si es un caracter alfabético en mayúscula. isdigit(c) Si es un número comprendido entre 0 y 9
  27. 27. Conversión entre cadenas y números int atoi( const char *s ) long atol( const char *s ) double atof( const char *s ) Convierte el string apuntado por s a un número. atoi() retorna un entero, atol() un long y atof() un double.
  28. 28. Ejemplos de Uso de funciones de Cadenas de caracteres
  29. 29. Ejercicio 1 Escriba un programa que permita leer una cadena, que puede contener letras y dígitos, y luego nos determine la cantidad de dígitos contenidos en la cadena.
  30. 30. 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.

×