Consultas, desarrollo de programas y petición de presupuestos:

jueves, 12 de julio de 2012

Funciones para manejar cadenas en C (I)

Para poder usar estas funciones tenemos que incluir la cabecera: string.h
Ejemplo de uso:
#include <string.h>


int main{
char txt1[100]="hola";
char txt2[100]="adios";
prinft("%s",txt1);
.....
// vamos a copiar la cadena txt2 en la txt1

Copiar cadenas:
 strcpy

        Copia la el contenido cadena que esta en la derecha , en la variable que esta a la izquierda.
Ejemplos:
 strcpy (txt1,"Holita");
 strcpy (TablaDePc[c].nombre,"Compuradora del Profesor");

 strcat        Suma dos cadenas (las concatena), añade la 2º cadena al final de la cadena 1º y el resultado la guarda en la primera: Ejemplos:
char txt1[100]="Hola"
char txt2[100]=", venga hasta luego."
printf("%s",txt1);
strcat(txt1,txt2);
prinft("%s",txt1;

Dara de resultado, en la terminal: "Hola, venga hasta luego."


Comparar cadenas:
 strcmp
        Compara dos cadenas (en orden alfabéticamente) y devuelve un número que es el resultado de esa comparación.
Si el resultado devuelto es:
    positivo: indica que la cadena 1 > cadena 2
    0: indica que son iguales
    negativo: indica que la cadena 1< cadena 2

Nota: la letra "a" esta despues que la letra "A", ya que se usa el nº del código ASCII, para la ordenación. ("a" es el número 97 en el código ASCII, y "A" es el número es 65 en el código ASCII)

Longitud de Cadenas:
 strlen
        Te devuelve la longitud de una cadena, (el numero de caracteres que contiene)
Ejemplo:
Printf("%d",strlen("Pedrito"))
En la terminal saldria 7
Ahora vamos a ver otra cabecera: ctype.h
Pasar caracteres a mayusculas:
int toupper(int caracter) -> pasa un caracter a mayusculas
int tolower(int caracter) -> pasa un caracter a minusculas.


Ejemplos:
Hacer una copia de txt1 y txt2.
char txt1[100]="Hola";
char txt2[100]="adios";
char copia1[100];
char copia2[100];
strcpy(copia1,txt1);
strcpy(copia2,txt2);

// conversion de una cadena de caractares a minusculas
for(c=0;c<strlen(copia1);c++){
copia1[c]=tolower(copia1[c]);
}

for(c=0;c<strlen(copia2);c++){
copia2[c]=tolower(copia2[c]);
}

// ahora que las dos las tenemos en minusculas ,( para no tener encuenta si contienen caracteres en mayusculas o minisculas ), las vamos a compararlas alfabéticamete:
if (strcmp(copia1,copia2)>0) {
        // copia1 es mayor que copia 2
} else {
        If  (strcmp(copia1,copia2)=0) {
               // son iguales
         } else {
                //copia 2 es mayor que copia 1
         }
}

Nota:
Tambien podemos hacer la copia y ponerlo en minisculas en un solo for:
for (c=0; c<strlen(txt2);c++){
copia2[c]=tolewer(txt2[c]));
}

No hay comentarios:

Publicar un comentario