• Martes 7 de Mayo de 2024, 07:31

Autor Tema:  Borrar espacioes en blanoc de una cadena de caracteres  (Leído 4051 veces)

kikocrak

  • Nuevo Miembro
  • *
  • Mensajes: 5
    • Ver Perfil
Borrar espacioes en blanoc de una cadena de caracteres
« en: Sábado 28 de Noviembre de 2009, 18:14 »
0
Buenas chicos:

Tengo que hacer un programa que elimine los espacios en blanco de una cadena de caracteres, no se donde esta el fallo, no puedo utiolizar funciones.
/* Programa que elimina de una cadena de caracteres espacios en blanco */
#include<stdio.h>
#define N 40

main(){
   
    char cad_esp[N];
    char cad_sinesp[N];
    int i,je;
   
    printf("Introduzca la cadena a eliminar los espacios:");
    scanf("%s",cad_esp);
   
    for(i=j=0;cad_esp!='';i++)
        cad_sinesp[j]=cad_esp;
       
        if(cad_esp==' '){
            cad_sinesp[j]=cad_esp[i+1];
            j++;
        }
       
    cad_sinesp[j]='';

    printf("La cadena sin espacios es: %sn",cad_sinesp);

}


Os agradeceria vuestra colaboracion, muchas gracias.

locazopro

  • Miembro activo
  • **
  • Mensajes: 51
    • Ver Perfil
Re: Borrar espacioes en blanoc de una cadena de caracteres
« Respuesta #1 en: Sábado 28 de Noviembre de 2009, 20:50 »
0
mira, no lo he probado, pero debería funcionar.

Código: C
  1.  
  2. #include <stdio.h>
  3.  
  4. int main(){
  5.   int i,j=0;
  6.   char con_esp[40],sin_esp[40];
  7.  
  8.   printf("Ingrese la cadena:");
  9.   scanf("%*c%[^n]",con_esp);
  10.  
  11.   for(i=0;i<40;i++){
  12.      if(con_esp[i] != ' '){
  13.         sin_esp[j] = con_esp[i];
  14.         j++;
  15.      }
  16.   }
  17.  
  18. printf("La cadena con espacios es %sn",con_esp);
  19. printf("La cadena sin espacios es %sn",sin_esp);
  20.  
  21. return -1;
  22. }
  23.  
  24.  

tienes que tener cuidado al pedir los datos al usuario, comprobar el total de carácteres y esas cosas aburridas. Me dices si funciona .

saludos!

kikocrak

  • Nuevo Miembro
  • *
  • Mensajes: 5
    • Ver Perfil
Re: Borrar espacioes en blanoc de una cadena de caracteres
« Respuesta #2 en: Sábado 28 de Noviembre de 2009, 23:29 »
0
Lo primero, muchas gracias, el programa funciona correctamente, lo unico que se come la primera letra, he modificado mi programa siguiendo tus directrices, pero me sigue sin funcionar, te lo muestro:

#include<stdio.h>
#define N 40

main(){
   
    char cad_esp[N];
    char cad_sinesp[N];
    int i=0,j=0;
   
    printf("Introduzca la cadena a eliminar los espacios:");
    scanf("%s",cad_esp);
   
    for(i=j=0;cad_esp!='';i++){
       
        if(cad_esp!=' '){
            cad_sinesp[j]=cad_esp;
            j++;
        }
}
   
    printf("%sn",cad_esp);
}


NO se donde estara el fallo. Muchas gracias de verdad.

locazopro

  • Miembro activo
  • **
  • Mensajes: 51
    • Ver Perfil
Re: Borrar espacioes en blanoc de una cadena de caracteres
« Respuesta #3 en: Lunes 30 de Noviembre de 2009, 21:47 »
0
haber, el problema no es la lógica de tu programa, es que la función scanf con su parámetro %s no permite capturar espacios en blanco, por lo que ni siquiera estas utilizando la frase que realmente quieres quitarle los espacios. Mira, para mas información ve alguna referencia de C, o algo asi, hay un libro excelente que sirve de referencia que The standard C Library de P.J Plauger.

Saludos!