Overblog Seguir este blog
Edit post Administration Create my blog
5 febrero 2010 5 05 /02 /febrero /2010 02:43
Arreglos de Caracteres.

Son arreglos que almacenan datos de tipo texto. Requieren la incorporacion de la libreria <string.h>.


Funciones de manejo de cadenas


Existen unas cuantas funciones el la biblioteca estándar de C para el manejo de cadenas:

 

strlen

strcpy

strcat

sprintf

strcmp


Para usar estas funciones hay que añadir la directiva:

 

    #include <string.h>

 

 

 

strlen


Esta función nos devuelve el número de caracteres que tiene la cadena (sin contar el '\0').

 

 

#include <stdio.h>

#include <string.h>

 

int main()

     {

     char texto[]="Gorka";

     int longitud;

 

     longitud = strlen(texto);

     printf( "La cadena \"%s\" tiene %i caracteres.\n", texto, longitud );

     }

Crea tus propias funciones: Vamos a ver cómo se haría esta función si no dispusiéramos de ella. Si no te enteras cómo funciona consulta Recorrer cadenas con punteros.

 

#include <stdio.h>

#include <string.h>

 

int main()

     {

     char texto[]="Gorka";

     char *p;

     int longitud=0;

 

     p = texto;

     while (*p!='\0')

          {

          longitud++;

          printf( "%c\n", *p ); /* Mostramos la letra actual */

          p++;                  /* Vamos a la siguiente letra */

          }

     printf( "La cadena \"%s\" tiene %i caracteres.\n", texto, longitud );

     }

 

Para medir la longitud de la cadena usamos un puntero para recorrerla (el puntero p). Hacemos que p apunte a texto. Luego entramos en un bucle while. La condición del bucle comprueba si se ha llegado al fin de cadena ('\0'). Si no es así suma 1 a longitud, muestra la letra por pantalla e incrementa el puntero en 1 (con esto pasamos a la siguiente letra).

 

 

 

strcpy


     #include <string.h>

 

     char *strcpy(char *cadena1, const char *cadena2);

 

Copia el contenido de cadena2 en cadena1. cadena2 puede ser una variable o una cadena directa (por ejemplo "hola"). Debemos tener cuidado de que la cadena destino (cadena1) tenga espacio suficiente para albergar a la cadena origen (cadena2).

 

#include <stdio.h>

#include <string.h>

 

int main()

     {

     char textocurso[] = "Este es un curso de C.";

     char destino[50];

 

     strcpy( destino, textocurso );

     printf( "Valor final: %s\n", destino );

     }

 

Vamos a ver otro ejemplo en el que la cadena destino es una cadena constante ("Este es un curso de C") y no una variable. Además en este ejemplo vemos que la cadena origen es sustituida por la cadena destino totalmete. Si la cadena origen es más larga que la destino, se eliminan las letras adicionales.

 

#include <stdio.h>

#include <string.h>

 

int main()

     {

     char destino[50] = "Esto no es un curso de HTML sino un curso de C.";

 

     printf( "%s\n", destino );

     strcpy( destino, "Este es un curso de C." );

     printf( "%s\n", destino );

     }

 

 

 

strcat


     #include <string.h>

 

     char *strcat(char *cadena1, const char *cadena2);

 

Copia la cadena2 al final de la cadena1.

 

#include <stdio.h>

#include <string.h>

 

int main()

     {

     char nombre_completo[50];

     char nombre[]="Gorka";

     char apellido[]="Urrutia";

 

     strcpy( nombre_completo, nombre );

     strcat( nombre_completo, " " );

     strcat( nombre_completo, apellido );

     printf( "El nombre completo es: %s.\n", nombre_completo );

     }

 

Como siempre tenemos que asegurarnos que la variable en la que metemos las demás cadenas tenga el tamaño suficiente. Con la primera línea metemos el nombre en nombre_completo. Usamos strcpy para asegurarnos de que queda borrado cualquier dato anterior. Luego usamos un strcat para añadir un espacio y finalmente metemos el apellido.

 

 

 

sprintf

     #include <stdio.h>

 

     int sprintf(char *destino, const char *format, ...);

 

Funciona de manera similar a printf, pero en vez de mostrar el texto en la pantalla lo guarda en una variable (destino). El valor que devuelve (int) es el número de caracteres guardados en la variable destino.

 

Con sprintf podemos repetir el ejemplo de strcat de manera más sencilla:

 

#include <stdio.h>

#include <string.h>

 

int main()

     {

     char nombre_completo[50];

     char nombre[]="Gorka";

     char apellido[]="Urrutia";

 

     sprintf( nombre_completo, "%s %s", nombre, apellido );

     printf( "El nombre completo es: %s.\n", nombre_completo );

     }

 

Se puede aplicar a sprintf todo lo que valía para printf.

 

 

strcmp

     #include <string.h>

 

     int strcmp(const char *cadena1, const char *cadena2);

 

Compara cadena1 y cadena2. Si son iguales devuelve 0. Un número negativo si cadena1 va antes que cadena2 y un número positivo si es al revés:

 

cadena1 == cadena2 -> 0

cadena1 > cadena2 -> número negativo

cadena1 < cadena2 -> número positivo


#include <stdio.h>

#include <string.h>

 

int main()

     {

     char nombre1[]="Gorka";

     char nombre2[]="Pedro";

 

     printf( "%i", strcmp(nombre1,nombre2));

     }

 


 

 

toupper() y tolower() - Convertir a mayúsculas y minúsculas

 

La función tolower() nos permite convertir una cadena a minúsculas:

 

char *tolower( char *cadena );

toupper cumple la función contraria, convierte la cadena a mayúsculas:

 

char *toupper( char *cadena );

Compartir este post

Repost 0
Published by Prof.Luis Eduardo Aponte
Comenta este artículo

Comentarios

Presentación

  • : El blog de Luis Eduardo Aponte
  • : Blog, para facilitar del Lenguaje de Programación C
  • Contacto

Enlaces