Cadenas de Caracteres

10
Cadenas de Caracteres. Funciones Asociadas al Manejo de cadenas de caracteres Aunque C no incorpora en su definición operadores para el manejo de cadenas de caracteres, todo compilador de C proporciona una librera estándar (string.h) con funciones para facilitar su utilización. Destacar algunas de ellas: strcpy : La función strcpy se encuentra en la biblioteca <string.h> y se utiliza para copiar una cadena de caracteres (fuente) en el lugar que ocupaba otra (destino). Esta copia es destructiva, o sea, que todos los caracteres que estaban en la cadena destino desaparecen, aunque la cadena destino fuera más larga que la cadena fuente .La cadena destino se pone como primer argumento de la función y la cadena fuente como segundo. Vamos a verlo con un ejemplo. #include<stdio.h> #include<string.h> int main() { char texto1[]="corta"; char texto2[]="mediana"; char texto3[]="larguisima"; strcpy(texto2,texto1); printf("%s\n",texto2); strcpy(texto2,texto3); printf("%s\n",texto2); getch(); return 0; } Resultado:

description

Cadenas de Caracteres hhh

Transcript of Cadenas de Caracteres

Cadenas de Caracteres.Funciones Asociadas al Manejo de cadenas de caracteresAunque C no incorpora en su definicin operadores para el manejo de cadenas de caracteres, todo compilador de C proporciona una librera estndar (string.h) con funciones para facilitar su utilizacin. Destacar algunas de ellas:strcpy: La funcinstrcpyse encuentra en la bibliotecay se utiliza para copiar una cadena de caracteres (fuente) en el lugar que ocupaba otra (destino). Esta copia es destructiva, o sea, que todos los caracteres que estaban en la cadena destino desaparecen, aunque la cadena destino fuera ms larga que la cadena fuente .La cadena destino se pone como primer argumento de la funcin y la cadena fuente como segundo. Vamos a verlo con un ejemplo.#include#include

int main() { char texto1[]="corta"; char texto2[]="mediana"; char texto3[]="larguisima";

strcpy(texto2,texto1); printf("%s\n",texto2); strcpy(texto2,texto3); printf("%s\n",texto2); getch();return 0; } Resultado:

strcat: En el programa anterior vimos que la funcin strcpy es desctructiva, pero hay otra funcin en la libreraque copia una cadena (fuente) en otra (destino) sin destruir sta, es decir, que copia una cadena detrs de la otra esta funcin es conocida comostrcat. Vamos a hacer un ejemplo:#include #includeint main(){ char texto1[]="Don Pepito"; char texto2[]=" y "; char texto3[]="Don Jose";printf("%s\n",texto1);

strcat(texto1,texto2); printf("%s\n",texto2); strcat(texto1,texto3); printf("%s\n",texto2); getchar(); return 0; } Resultado:

strlen: esta funcin devuelve el total (entero) de caracteres que conforman una cadena (excluyendo el caracter nulo \0). Vamos a hacer un ejemplo:#include #include #include #define MAXLON 80

int main(void){ char a[MAXLON+1]; int longitud; clrscr(); printf ("Introduce una cadena (max. %d caracteres): ", MAXLON); scanf("%s",&a); longitud = strlen(a); printf ("\nLongitud de la cadena: %d\n", longitud); getch();return 0; } Resultado:

strcmp:strcmp(abreviatura de ((string comparison))). La funcin strcmp recibe dos cadenas, a y b, devuelve un entero. El entero que resulta de efectuar la llamada strcmp(a, b) codifica el resultado de la comparacin:es menor que cero si la cadena a es menor que b,es 0 si la cadena a es igual que b, yes mayor que cero si la cadena a es mayor que b.Naturalmente, menor significa que va delante en orden alfabtico, y mayor que va detrs.#include #include int main() { char s1[6] = "Abeja"; char s2[6] = "abeja"; int i; printf( "s1=%s\t", s1 ); printf( "s2=%s\n", s2 ); i = strcmp( s1, s2 ); printf( "s1 es " ); if( i < 0 ) printf( "menor que" ); else if( i > 0 ) printf( "mayor que" ); else printf( "igual a" ); printf( " s2\n" );

return 0; } Resultado:

Otras Funciones tiles para operar cadenas de caracteres.No slo string.h contiene funciones tiles para el tratamiento de cadenas. Enctype.hse encuentran unas funciones que permiten hacer cmodamente preguntas acerca de los caracteres, como si son maysculas, minsculas, dgitos, etc:isalnum(caracter): devuelve cierto (un entero cualquiera distinto de cero) si caracter es una letra o dgito, y falso (el valor entero 0) en caso contrario.isalpha(caracter): devuelve cierto si caracter es una letra, y falso en caso contrario.isblank(caracter): devuelve cierto si caracter es un espacio en blanco o un tabulador.isdigit(caracter) devuelve cierto si caracter es un digito, y falso en caso contrario.isspace(caracter): devuelve cierto si caracter es un espacio en blanco, un salto de lnea, un retorno de carro, un tabulador, etc., y falso en caso contrario.islower(caracter): devuelve cierto si caracter es una letra minscula, y falso en caso contrario.isupper(caracter): devuelve cierto si caracter es una letra mayscula, y falso en caso contrario.toupper(caracter): devuelve la mayscula asociada a caracter, si la tiene; si no, devuelve el mismo caracter.tolower(caracter): devuelve la minscula asociada a caracter, si la tiene; si no, devuelve el mismo caracter.Constantes y tipos[editar]NombreDescripcin

NULLmacro que representa la constantepuntero nulo; representa un valor de puntero que no apunta a ninguna direccin vlida de objeto alguno en memoria

size_ttipo entero sin signo (positivo); es el tipo devuelto por el operadorsizeof

Funciones[editar]NombresDescripcin

memcpycopia n bytes entre dos reas de memoria que no deben solaparse

memmovecopia n bytes entre dos reas de memoria; al contrario quememcpylas reas pueden solaparse

memchrbusca un valor a partir de una direccin de memoria dada y devuelve un puntero a la primera ocurrencia del valor buscado oNULLsi no se encuentra

memcmpcompara los n primeros caracteres de dos reas de memoria

memsetsobre escribe un rea de memoria con un patrn de bytes dado

strcataade una cadena al final de otra

strncataade los n primeros caracteres de una cadena al final de otra

strchrlocaliza un carcter en una cadena, buscando desde el principio

strrchrlocaliza un carcter en una cadena, buscando desde el final

strcmpcompara dos cadenas alfabticamente ('a'!='A')

strncmpcompara los n primeros caracteres de dos cadenas numricamente ('a'!='A')

strcollcompara dos cadenas segn la colacin actual ('a'=='A')

strcpycopia una cadena en otra

strncpycopia los n primeros caracteres de una cadena en otra

strerrordevuelve la cadena con el mensaje de error correspondiente al nmero de error dado

strlendevuelve la longitud de una cadena

strspndevuelve la posicin del primer carcter de una cadena que no coincide con ninguno de los caracteres de otra cadena dada

strcspndevuelve la posicin del primer carcter que coincide con alguno de los caracteres de otra cadena dada

strpbrkencuentra la primera ocurrencia de alguno de los caracteres de una cadena dada en otra

strstrbusca una cadena dentro de otra

strtokparte una cadena en una secuencia de tokens

strxfrmtransforma una cadena en su forma de colacin (??)

strrevinvierte una cadena

Extensiones para CISO[editar]NombreDescripcinEspecificacin

strduphace un duplicado de la cadena dada reservando dinmicamente la memoria necesariaPOSIX; originalmente una extensin BSD

strcpy svariante destrcpyque verifica los lmitesISO/IEC WDTR 24731

mempcpyvariante dememcpyque devuelve un puntero al byte siguiente al ltimo byte escritoGNU

memccpyvariante dememcpyque para al encontrar un byte determinadoUNIX 98?

strerror ranlogo astrerror_r(thread-safe)GNU, POSIX

strlcpyvariante destrcpyque verifica los lmitesoriginalmenteOpenBSD, actualmente tambinFreeBSD,Solaris,OS X

strtok rversinthread-safedestrtokPOSIX

strsignalanlogamente astrerror, devuelve la cadena representacin de la sealsig(nothread safe)BSDs, Solaris, Linux

Vase tambin[editar]