
Funciones de tratamiento de strings
C/Visual C
Publicado el 14 de Enero del 2003 por Sebastian (12 códigos)
7.979 visualizaciones desde el 14 de Enero del 2003
Funciones de tratamiento de strings sin utilizar la biblioteca string.h.

















/*Id. programa: String 1 *//*Autor: Nieva, Sebastian *//*Fecha de creacion: 18/03/02 *//*Fecha de ultima modificacion: 18/03/02 *//*Tarea: Implementar las siguientes funciones de cadena, sin utilizar la
biblioteca string.h
int strlen(char *s)
Devuelve un entero que es la longitud de la cadena s.
char *strcpy(char *dest, char *orig)
Copia el contenido de la cadena orig en la cadena dest y de-
vuelve un puntero a la nueva cadena.
char *strcat(char *dest, char *orig)
Concatena la cadena orig a continuación de la cadena dest; de-
vuelve un puntero a la nueva cadena.
char *strchr(char *s, int a)
Busca la primera aparición del cararcter a en la cadena s; re-
torna un puntero al caracter si lo encontró o a NULL.
int strcmp(char *a, char *b)
Compara las cadenas a y b; devuelve un 0 si ambas cadenas son
iguales, un número menor a 0 si a < b y mayor a 0 si a > b.
char *strlwr(char *s)
Convierte una cadena a minúsculas; retorna puntero a la cadena.
*//*Version: 1.0 *//*Lenguaje: ANSI C *//*Requerimientos: Nada *//*Recibe: Nada *//*Entrega: Nada */#include<stdio.h>
#include<conio.h>
#define MAX 256
int ingresar(char *, char *);
int strlen(char *);
char *strcpy(char *, char *);
char *strcat(char *, char *);
char *strchr(char *, int);
int strcmp(char *, char *);
char *strlwr(char *);
void main(void)
{char cadena1[MAX], cadena2[MAX];
int caracter;
clrscr();
printf ("\t\t\t*****************\n");
printf ("\t\t\t* EJERCICIO 1 *\n");
printf ("\t\t\t*****************\n");
printf ("\t\t - PANTALLA PRINCIPAL -\n\n");
caracter=ingresar(cadena1, cadena2);
printf("LA CANTIDAD DE CARACTERES DE LA PRIMER CADENA ES: %d\n"
"LA CANTIDAD DE CARACTERES DE LA SEGUNDA CADENA ES: %d\n",
strlen(cadena1), strlen(cadena2));
if(strchr(cadena1, caracter)!= NULL)
printf("EL CARACTER ENCONTRADO ES: %c\n",*strchr(cadena1, caracter));
/*Apunta al caracter encontrado. */if(strcmp(cadena2,cadena1)==1)
printf("LA CADENA DESTINO ES MAYOR QUE LA CADENA ORIGEN\n");
else if(!strcmp(cadena2,cadena1))
printf("LAS CADENAS SON IGUALES\n");
else
printf("LA CADENA DESTINO ES MENOR QUE LA CADENA ORIGEN\n");
printf("LA PRIMER CADENA EN MINUSCULAS ES: %s \n",strlwr(cadena1));
printf("LA OTRA CADENA EN MINUSCULAS ES: %s \n",strlwr(cadena2));
printf("INICIANDO COPIA DE CADENA...\n");
printf("%s\n", strcpy(cadena2,cadena1));/*Puntero a la nueva cadena*/
printf("INICIANDO CONCATENACION DE CADENA...\n");
printf("%s\n", strcat(cadena2,cadena1));
printf("\n\n\n\n\n\n\n\n\n\n\nVERSION 1.0\nCOPYRIGHT 2002-2010\n");
printf("PROGRAMA DESARROLLADO POR SEBASTIAN NIEVA \n");
printf("OPRIMA UNA TECLA PARA TERMINAR........");
getch();
}int ingresar(char *s1, char *s2)
{printf("\nINGRESE LA PRIMER CADENA\n");
gets(s1);
printf("\nINGRESE LA SEGUNDA CADENA\n");
gets(s2);
fflush(stdin);
printf("\nINGRESE EL CARACTER A BUSCAR\n");
return getch();
}int strlen(char *s)
{ int cant=0;while(*s!=NULL)
{cant++;
s++;
}return cant;
}char *strcpy(char *d, char *o)
{char *inicio=d;
while(*o!='\0')
{*d=*o;
d++;
o++;
}*d='\0';
return inicio;//va a vivir mientras viva la variable del main a la cual
//apunta(en este caso apunta al 1er elemento de un arreglo)
}char *strcat(char *d, char *o)
{char *inicio=d;
d=d+strlen(d);
while(*o!= '\0')
{*d=*o;
d++;
o++;
}*d='\0';// Ya que esya en una posicion mas
return inicio;
}char *strchr(char *s, int a)
{while(*s!=NULL)
{if(*s==a)
return s;
s++;
}return NULL;
}int strcmp(char *a, char *b)
{int canta=0, cantb=0;
char *inicioa, *iniciob;
inicioa=a, iniciob=b;
while(*a!=NULL && *b!=NULL)
{if(*a!=*b)
{while(*inicioa!=NULL && *iniciob!=NULL)
{canta+=*inicioa;
cantb+=*iniciob;
inicioa++;
iniciob++;
}if(canta<cantb)
return -1;else
return 1;
}a++;
b++;
}return 0;
}char *strlwr(char *s)
{char *inicio=s; //A-Z 65-90
while(*s!='\0') //a-z 97-122
{if(*s>='A' && *s<='Z')
*s+=(char)32;
s++;
}return inicio;
}
Comentarios sobre la versión: Versión 1 (0)
No hay comentarios