Ver Mensaje Individual
  #6 (permalink)  
Antiguo 06/08/2014, 10:36
Pantaláimon
 
Fecha de Ingreso: julio-2006
Ubicación: Barcelona
Mensajes: 244
Antigüedad: 18 años, 5 meses
Puntos: 32
Respuesta: Duda sencilla de cadena con punteros en C

Cita:
Iniciado por Lauri23
gracias por la ayuda vangopd.

Lo que pasa q el profe dijo qse hiciera con puntero y aritmetica de punteros...q es como no me sale a mi :(
Una manera seria así:

Código C:
Ver original
  1. #include <stdio.h>
  2.  
  3. void QuitaEspacios(char *s)
  4. {
  5.    char *p = s; /* p al inicio apunta al principio de la cadena */
  6.  
  7.    /* Se irá leyendo de s y se irá escribiendo en p.                     *
  8.     * s irá incrementando en cada repetición del bucle.                  *
  9.     * p sólo incrementará al añadirle un carácter que no sea un espacio. *
  10.     */
  11.  
  12.    /* se recorre la cadena s hasta que se llegue al final '\0' */
  13.    while (*s != '\0')
  14.    {
  15.       if (*s != ' ')
  16.       {
  17.          *p = *s;
  18.          p++;
  19.       }
  20.  
  21.         /*printf("%c", *s); */
  22.         s++;
  23.    }
  24.    /* finalmente añadirle el caracter de fin de cadena */
  25.    *p = '\0';
  26.  
  27. }
  28.    
  29. int main(void)
  30. {
  31.    char cadena[] = "Esto es    una cadena   con espacios  ";
  32.    printf("cadena antes:   %s\n", cadena);
  33.  
  34.    /* modifica la cadena quitandole los espacios */
  35.    QuitaEspacios(cadena);
  36.    printf("cadena despues: %s\n", cadena);
  37.  
  38.    return 0;
  39. }

Pero sintetizando puede quedar así:
Código C:
Ver original
  1. void QuitaEspacios(char *s)
  2. {
  3.    char *p = s;
  4.  
  5.    while ((*p = *s++) != '\0')
  6.       if (*p != ' ') p++;
  7. }
Un saludo!
__________________
github.com/xgbuils | npm/xgbuils

Última edición por Pantaláimon; 06/08/2014 a las 10:56