Ver Mensaje Individual
  #3 (permalink)  
Antiguo 08/01/2007, 11:15
fightmx
 
Fecha de Ingreso: febrero-2003
Ubicación: D.F.
Mensajes: 163
Antigüedad: 22 años
Puntos: 22
Re: Borrar espacios sobrantes

Hola PcKing.

Mira, para este caso basta con un solo while y los dos índices por ejemplo i,j.
La idea principal es copiar en cada iteración el caracter de la posición j a la posición i e incrementar el índice j de tal forma que cuando el caracter copiado es '\0' salimos del bucle. A su vez en cada iteración si el caracter copiado no es un espacio en blanco entonces incrementamos i para copiar el siguiente caracter, pero si fuera un espacio en blanco entonces se sobreescribe por el caracter copiado en la siguiente iteración.

Ejemplo:
Código:
void blanks(char* str)
{
     int i = 0;
     int j = 0;
     
     while((*(str + i) = *(str + j++)) != '\0')
        if((*(str + i)) != ' ')
         i++;
}
Con esto solo trato de ejemplificar como puedes reducir a un solo while tu función, la implementación final que hagas pues ya te corresponde(toma en cuenta las consideraciones de MaxExtreme).

Saludos.