elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Los 10 CVE más críticos (peligrosos) de 2020


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  suprimir espacios
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: suprimir espacios  (Leído 2,404 veces)
ALONSOQ

Desconectado Desconectado

Mensajes: 62



Ver Perfil
suprimir espacios
« 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


En línea

DickGumshoe


Desconectado Desconectado

Mensajes: 480



Ver Perfil WWW
Re: suprimir espacios
« Respuesta #1 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!


En línea

ALONSOQ

Desconectado Desconectado

Mensajes: 62



Ver Perfil
Re: suprimir espacios
« Respuesta #2 en: 11 Julio 2012, 22:33 pm »

Muchísimas gracias, una respuesta clarísima

saludos
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Suprimir Propagandas
Multimedia
circus2003 7 3,380 Último mensaje 24 Abril 2005, 09:26 am
por Sourraund
SUPRIMIR PROCESOS
Programación Visual Basic
gera 6 3,322 Último mensaje 21 Agosto 2005, 04:11 am
por NYlOn
como suprimir telesupervision en wincab6016 delsat
Foro Libre
buendia 0 2,981 Último mensaje 28 Septiembre 2010, 05:37 am
por buendia
Suprimir cuenta principal google
Dispositivos Móviles (PDA's, Smartphones, Tablets)
indorama 0 1,956 Último mensaje 26 Junio 2012, 17:14 pm
por indorama
Intento suprimir espacios y dejar solo un espacio (BACHT)
Scripting
victme 1 2,474 Último mensaje 23 Febrero 2018, 16:19 pm
por Eleкtro
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines