
Funciones de tratamiento de strings
C/Visual C
Publicado el 14 de Enero del 2003 por Sebastian (12 códigos)
7.875 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