Está en la página 1de 9

Cadenas de Caracteres.

Funciones Asociadas al Manejo de cadenas de caracteres


Aunque 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 funcin 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 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<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:

strcat: En el programa anterior vimos que la funcin strcpy es desctructiva, pero hay otra funcin en la librera <string.h> que copia una cadena
(fuente) en otra (destino) sin destruir sta, es decir, que copia una cadena detrs de la otra esta funcin es conocida como strcat. Vamos a hacer
un ejemplo:
#include<stdio.h>
#include<string.h>
int 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 <stdio.h>
#include <string.h>
#include <conio.h>
#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, y
es 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 <stdio.h>
#include <string.h>
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. En ctype.h se 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]
Nombr

Descripcin

NULL

size_
t

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

tipo entero sin signo (positivo); es el tipo devuelto por el operador sizeof

Funciones[editar]
Nombres

Descripcin

memcpy

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

memmove

copia n bytes entre dos reas de memoria; al contrario que memcpy las reas pueden solaparse

memchr

busca un valor a partir de una direccin de memoria dada y devuelve un puntero a la primera ocurrencia del valor buscado o NULL si no se
encuentra

memcmp

compara los n primeros caracteres de dos reas de memoria

memset

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

strcat

aade una cadena al final de otra

strncat

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

strchr

localiza un carcter en una cadena, buscando desde el principio

strrchr

localiza un carcter en una cadena, buscando desde el final

strcmp

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

strncmp

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

strcoll

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

strcpy

copia una cadena en otra

strncpy

copia los n primeros caracteres de una cadena en otra

strerro

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

strlen

devuelve la longitud de una cadena

strspn

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

strcspn

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

strpbrk

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

strstr

busca una cadena dentro de otra

strtok

parte una cadena en una secuencia de tokens

strxfrm

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

strrev

invierte una cadena

Extensiones para C ISO[editar]


Nombre

strdup

Descripcin

hace un duplicado de la cadena dada reservando dinmicamente la memoria


necesaria

Especificacin

POSIX; originalmente una extensin BSD

strcpy s

mempcpy

memccpy

strerror
r

variante de strcpy que verifica los lmites

variante de memcpy que devuelve un puntero al byte siguiente al ltimo byte


escrito

GNU

variante de memcpy que para al encontrar un byte determinado

UNIX 98?

anlogo a strerror_r (thread-safe)

GNU, POSIX

strlcpy

variante de strcpy que verifica los lmites

strtok r

versin thread-safe de strtok

strsignal

ISO/IEC WDTR 24731

anlogamente a strerror , devuelve la cadena representacin de la


seal sig (no thread safe)

Vase tambin[editar]

originalmente OpenBSD, actualmente


tambin FreeBSD, Solaris,OS X

POSIX

BSDs, Solaris, Linux