Trim en C

Pues eso, ¿alguno me puede pasar una función para hacer un trim en C Standard? en plan char *trim(char *cadena)
Ahi va:

#include

#define WHITESPACE_STR " \f\n\r\t\v"

/**
* Remove whitespace characters from both ends of a copy of
* '\0' terminated STRING and return the result.
**/
char *
trim (char *string)
{
char *result = 0;

/* Ignore NULL pointers. */
if (string)
{
char *ptr = string;

/* Skip leading whitespace. */
while (strchr (WHITESPACE_STR, *ptr))
++ptr;

/* Make a copy of the remainder. */
result = strdup (ptr);

/* Move to the last character of the copy. */
for (ptr = result; *ptr; ++ptr)
/* NOWORK */;
--ptr;

/* Remove trailing whitespace. */
for (--ptr; strchr (WHITESPACE_STR, *ptr); --ptr)
*ptr = '\0';
}

return result;
}
Trabaja con la cadena pasada por referencia, no por copia. Debes pasarle un puntero a la cadena.
No he testeado la funcion personalmente, la revise y deberia funcionar. (No la hice yo ;D) Ya contaras...

;)


PD: Si quieres eliminar la linea:
#define WHITESPACE_STR " \f\n\r\t\v"
Sustituye donde ponga WHITESPACE_STR por " \f\n\r\t\v". Aunque te recomiento dejarlo asi.
Es parecido a lo que hacía yo (y que no iba). Probaré con esto a ver. Muuuchas gracias.


PD: Gracias por la explicación de como usar el preprocesador XD [beer]
2 respuestas