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:

cadena04


strcat: En el programa anterior vimos que la función strcpy es desctructiva, pero hay otra función en la librería <string.h> que copia una cadena (fuente) en otra (destino) sin destruir ésta, es decir, que copia una cadena detrás de la otra esta función 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:

cadena05


strlen: esta función 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:

cadena06


strcmp: strcmp (abreviatura de ((string comparison))). La función 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 comparación:

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 alfabético, y mayor que va detrás.

#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:

cadena07


Otras Funciones útiles para operar cadenas de caracteres.

No sólo string.h contiene funciones útiles para el tratamiento de cadenas. En ctype.h se encuentran unas funciones que permiten hacer cómodamente preguntas acerca de los caracteres, como si son mayúsculas, minúsculas, dígitos, etc:

isalnum(caracter): devuelve cierto (un entero cualquiera distinto de cero) si caracter es una letra o dígito, 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 línea, un retorno de carro, un tabulador, etc., y falso en caso contrario.

islower(caracter): devuelve cierto si caracter es una letra minúscula, y falso en caso contrario.

isupper(caracter): devuelve cierto si caracter es una letra mayúscula, y falso en caso contrario.

toupper(caracter): devuelve la mayúscula asociada a caracter, si la tiene; si no, devuelve el mismo caracter.

tolower(caracter): devuelve la minúscula asociada a caracter, si la tiene; si no, devuelve el mismo caracter.


Seguir a paginadeC en Twitter Foro de Página de C ¡CSS Válido!