Más Punteros: Trim
Creado: 29/8/2002
Última Actualización: 26/6/2007
Más punteros, esta vez, una función útil.
Update: Gracias a CalgaryCorpus que en los comentarios indicó que no es necesario el último bloque cuando no hay espacios al principio del string. Además aproveché de corregir un error garrafal que hacía que la función se fuese al demonio cuando se le entrega un string vacío (""). Además ahora retorna el buffer, así se puede usar en una expresión o en una función como printf().
char *trim(char *str)
{
char *p, *q;
if (!*str) {
return NULL;
}
p = q = str;
while (*q) {
q++;
}
q--;
while (!isgraph(*q) && q > str) {
q--;
}
*++q = '\0';
while (*p && !isgraph(*p)) {
p++;
}
if (p != str) {
q = str;
while (*p) {
*q = *p;
p++;
q++;
}
*q = '\0';
}
return str;
}