Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: ALONSOQ en 11 Julio 2012, 21:51 pm



Título: suprimir espacios
Publicado por: ALONSOQ en 11 Julio 2012, 21:51 pm
Código:
[code][code]Hola, 
Tengo hecho este programa para suprimir espacios en blanco, y funciona correctamente; sin embargo tengo una duda:

Por que si en lugar de utilizar una única cadena:
for( i=0;texto[i]!='\0';i++ )
     {
          if( texto[i] == ' ' )/* si hay un espacio*/
          {
              for( j = i+1 ; texto[j] !='\0' ; j++ )
              {
                   texto[j-1] = texto[j];
              }
            texto[j-1] = '\0';
          }
          
     }
    
           printf( "Sin espacios : %s\n" ,texto );
      
      system( "pause" );
[/code]

utilizo dos cadenas y una la vuelvo en otra mediante strcpy;

Código
  1. for( i = 0 ; texto[i] != '\0' ; i++ )
  2.     {
  3.          if( texto[i] == ' ' )/* si hay un espacio*/
  4.          {
  5.              for( j = i+1 ; palabra[j] != '\0' ; j++ )
  6.              {
  7.                   palabra[j-1] = palabra[j];
  8.              }
  9.              palabra[j-1] = '\0';
  10.  
  11.          }
  12.  
  13.     }
  14.  
  15.  
  16.           printf( "Sin espacios : %s\n" , palabra )
;[/code]
       al meter por ejemplo la frase hola mundo feliz, no funciona en el segundo caso?

muchas gracias


Título: Re: suprimir espacios
Publicado por: DickGumshoe en 11 Julio 2012, 22:22 pm
¡Hola!

No funciona bien porque lías las variables. Pones:

Código
  1. if( texto[i] == ' ' )/* si hay un espacio*/

Sin embargo, en el bucle for de después los espacios se los quitas a palabra, no a texto , por tanto la modificación se hará cuando encuentre un espacio en la cadena original, y no en la que estás editando, y te dará mal. Quedaría así:

Código
  1. for( i = 0 ; texto[i] != '\0' ; i++ )
  2.     {
  3.          if( palabra[i] == ' ' )/* si hay un espacio*/
  4.          {
  5.              for( j = i+1 ; palabra[j] != '\0' ; j++ )
  6.              {
  7.                   palabra[j-1] = palabra[j];
  8.  
  9.              }
  10.        palabra[j-1] = '\0';
  11.          }
  12.  
  13.     }

Saludos!


Título: Re: suprimir espacios
Publicado por: ALONSOQ en 11 Julio 2012, 22:33 pm
Muchísimas gracias, una respuesta clarísima

saludos