Para quienes dan sus primeros pasos en C, pero que vienen de otros lenguajes de más alto nivel, se encontrarán con el faltante de varias funciones disponibles en otros lenguajes (ya sea como funciones o como métodos de algunas clases).
A continuación, pongo a vuestra disposición el código de algunas funciones que pueden resultar de utilidad: las clásicas funciones rtrim, ltrim y trim (para eliminar espacios a la derecha, izquierda y de ambos lados de una cadena) y de la función isNumeric para comprobar si un valor ingresado es numérico o no.
Además, para agregar un poco de valor agregado a la publicación convertiremos a estas funciones en una librería dinámica.
Los pasos a seguir son los siguientes:
char *rtrim (char *str);
char *ltrim (char *str);
char *trim (char *str);
#endif
#include "funciones.h"
/*******************************************************************************
*
*/
int isNumeric(const char *val)
{
int i = 0, s = 0;
for(i = 0; i <strlen(val); i++)
if(isdigit(val[i]) == 0)
s = -1;
return s;
}
/*******************************************************************************
*
*/
int isAlpha(const char *val)
{
int i = 0, s = 0;
for(i = 0; i <strlen(val); i++)
if(isalnum(val[i]) == 0)
s = -1;
return s;
}
/*******************************************************************************
*
*/
char *rtrim(char *str)
{
char *endStr = 0;
endStr = str + strlen(str) - 1;
while( (endStr>= str) && (*endStr == ' '))
*endStr-- = '\0';
return str;
}
/*******************************************************************************
*
*/
char *ltrim(char *str)
{
char *startStr = 0;
startStr = str;
while(*startStr == ' ')
startStr++;
return startStr;
}
/*******************************************************************************
*
*/
char *trim(char *str)
{
return ltrim(rtrim(ltrim(str)));
}
clean:
rm libfunciones.so
libfunciones: funciones.c
cc $(CFLAGS) -c -o funciones.o funciones.c
ld -o libfunciones.so funciones.o -shared
rm funciones.o
Para evitarles la tarea de copiar y pegar, pueden descargar los archivos anteriores aquí:
Para una próxima entrega, les estoy debiendo como utilizar esta librería dinámica desde otra aplicación.
Vía: Seraphinux
4 Respuestas para "Algunas funciones útiles escritas en C"
Luciano excelente complemento lo de la biblioteca dinámica
en unos días pondré en mi blog las otras funciones que tuve que armar para el tedioso manejo de cadenas :S
Saludos!!!!
Excelente! Muchas gracias por el comentario.
Estaré esperando nuevas funciones.
Saludos!
Hola, muy buen blog.
Pero solo un comentario, no le sobra a la función trim el ultimo ltrim.
char *trim(char *str)
{
return rtrim(ltrim(str));
}
Saludos.
Debes corregir tu código de isNumeric. Está operando al revés.
int isNumeric(const char *val)
{
// int i = 0, s = 0;
int i = 0, s = -1;
for(i = 0; i <strlen(val); i++)
if(isdigit(val[i]) == 0)
// s = -1;
s = 0;
return s;
}
Comentarios: