ClubEnsayos.com - Ensayos de Calidad, Tareas y Monografias
Buscar

Manejo De Cadenas String.h


Enviado por   •  19 de Abril de 2013  •  1.657 Palabras (7 Páginas)  •  500 Visitas

Página 1 de 7

17. Manejo de cadenas <string.h>

Recordando la presentación de arreglos hecha (capítulo 5) en donde las cadenas están definidas como un arreglo de caracteres o un apuntador a una porción de memoria conteniendo caracteres ASCII. Una cadena en C es una secuencia de cero o más caracteres seguidas por un caracter NULL o \0:

Figura 17.1: Representación de un arreglo.

Es importante preservar el caracter de terminación NULL, ya que con éste es como C define y maneja las longitudes de las cadenas. Todas las funciones de la biblioteca estándar de C lo requieren para una operación satisfactoria.

En general, aparte de algunas funciones restringidas en longitud (strncat(), strncmp() y strncpy()), al menos que se creen cadenas a mano, no se deberán encontrar problemas. Se deberán usar las funciones para manejo de cadenas y no tratar de manipular las cadenas en forma manual desmantelando y ensamblando cadenas.

17.1 Funciones básicas para el manejo de cadenas

Todas las funciones para manejo de cadenas tienen su prototipo en:

#include <string.h>

Las funciones más comunes son descritas a continuación:

• char *strcpy(const char *dest, const char *orig) -- Copia la cadena de caracteres apuntada por orig (incluyendo el carácter terminador '\0') al vector apuntado por dest. Las cadenas no deben solaparse, y la de destino, debe ser suficientemente grande como para alojar la copia.

• int strcmp(const char *s1, const char *s2) -- Compara las dos cadenas de caracteres s1 y s2. Devuelve un entero menor, igual o mayor que cero si se encuentra que s1 es, respectivamente, menor que, igual a, o mayor que s2.

• char *strerror(int errnum) -- Devuelve un mensaje de error que corresponde a un número de error.

• int strlen(const char *s) -- Calcula la longitud de la cadena de caracteres.

• char *strncat(char *s1, const char *s2, size_t n) -- Agrega n caracteres de s2 a s1.

• int strncmp(const char *s1, char *s2, size_t n) -- Compara los primeros n caracteres de dos cadenas.

• char *strncpy(const char *s1, const char *s2, size_t n) -- Copia los primeros n caracteres de s2 a s1.

• strcasecmp(const char *s1, const char *s2) -- versión que ignora si son mayúsculas o minúsculas de strcmp().

• strncasecmp(const char *s1, const char *s2, size_t n) -- versión insensible a mayúsculas o minúsculas de strncmp() que compara los primeros n caracteres de s1.

El uso de muchas funciones es directo, por ejemplo:

char *s1 = "Hola";

char *s2;

int longitud;

longitud = strlen("Hola"); /* long = 4 */

(void) strcpy(s2,s1);

Observar que tanto strcat() y strcopy() regresan una copia de su primer argumento, el cual es el arreglo destino. Observar también que orden de los argumentos es arreglo destino seguido por arreglo fuente lo cual a veces es una situación para hacerlo incorrectamente.

La función strcmp() compara lexicográficamente las dos cadenas y regresa:

• Menor que cero -- si s1 es léxicamente menor que s2;

• Cero -- si s1 y s2 son léxicamente iguales;

• Mayor que cero -- si s1 es léxicamente mayor que s2;

Las funciones de copiado strncat(), strncmp() y strncpy() son versiones más restringidas que sus contrapartes más generales. Realizan una tarea similar, pero solamente para los primeros n caracteres. Observar que el caracter de terminación NULL podría ser violado cuando se usa estas funciones, por ejemplo:

char *s1 = "Hola";

char *s2 = 2;

int longitud = 2;

(void) strncpy(s2, s1, longitud); /* s2 = "Ho" */

donde s2 no tiene el terminador NULL.

17.1.1 Búsqueda en cadenas

La biblioteca también proporciona varias funciones de búsqueda en cadenas.

• char *strchr(const char *s, int c) -- Devuelve un puntero a la primera ocurrencia del carácter c en la cadena de caracteres s.

• char *strrchr(const char *s, int c) -- Encuentra la última ocurrencia del caracter c en la cadena.

• char *strstr(const char *s1, const char *s2) -- Localiza la primera ocurrencia de la cadena s2 en la cadena s1.

• char *strpbrk(const char *s1, const char *s2) -- Regresa un apuntador a la primera ocurrencia en la cadena s1 de cualquier carácter de la cadena s2, o un apuntador nulo si no hay un caracter de s2 que exista en s1.

• size_t strspn(const char *s1, const char *s2) -- Calcula la longitud del segmento inicial de s1 que consta únicamente de caracteres en s2.

• size_t strcspn(const char *s1, const char *s2) -- Regresa el número de caracteres al principio de s1 que no coinciden con s2.

• char *strtok(char *s1, const char *s2) -- Divide la cadena apuntada a s1 en una secuencia de ``tokens'', cada uno de ellos esta delimitado por uno o más caracteres de la cadena apuntada por s2.

Las funciones strchr() y strrchr() son las más simples de usar, por ejemplo:

char *s1 = "Hola";

char *resp;

resp = strchr(s1,'l');

Después de la ejecución, resp apunta a la localidad s1 + 2.

La función strpbrk() es una función más general que busca la primera ocurrencia de cualquier grupo de caracteres, por ejemplo:

char *s1 = "Hola";

char *resp;

res = strpbrk(s1,"aeiou");

En este caso, resp apunta a la

...

Descargar como (para miembros actualizados)  txt (10.1 Kb)  
Leer 6 páginas más »
Disponible sólo en Clubensayos.com