Como puedo quitar caracteres blancos duplicados
Publicado por César (1 intervención) el 13/03/2010 10:07:49
Hola buenos días:
En principio, me gustaría aclarar que no quiero que me resolvais el problema, sino más bien que me orienteis un poco, ya que llevo demasiado tiempo dándole vueltas al mismo, y creo que no puede ser tan complicado. El problema es el siguiente:
Necesito crear un programa usando getchar() para la entrada y putchar() para la salida, que me lea una cadena y cuando introduzca caracteres en blanco duplicados me los deje como blancos simples, creo que me he explicado correctamente. Os mando el código con comentarios que he sacado, pero que me da una salida extraña, seguro que es una tontería, pero agradecería un poco de orientación.
#include <stdio.h>
main(){
int c;
int blancos;
blancos = -1; //Variable auxiliar para los blancos
while((c = getchar()) != EOF){ //Leemos caracter a caracter hasta el EOF
putchar(c); //Sacaremos a pantalla al pulsar Intro
if(c == ' '){ //Si el caracter introducido es un espacio en blanco
blancos++; //Actualizamos los blancos
while(blancos == 0){ //Mientras sigamos introduciendo blancos
putchar('\b'); //Borramos el carácter blanco introducido
}
}else{
blancos = -1; //Reiniciamos variable auxiliar siempre cuando el carácter no sea un blanco
}
}
return 0;
}
P.D: Sé que este programa se puede hacer con funciones como strchr, etc, pero como habreis notado no es mi intención utilizar este tipo de funciones, es por un tema de aprendizaje. También habreis notado que es estándar puro y duro, y por lo tanto, no depende del S.O. En este caso, es bajo linux, pero estoy segurísimo, que debería funcionar bajo cualquier plataforma y S.O.
Esperando vuestra ayuda, me despido atentamente y os doy las gracias.
Un saludo
En principio, me gustaría aclarar que no quiero que me resolvais el problema, sino más bien que me orienteis un poco, ya que llevo demasiado tiempo dándole vueltas al mismo, y creo que no puede ser tan complicado. El problema es el siguiente:
Necesito crear un programa usando getchar() para la entrada y putchar() para la salida, que me lea una cadena y cuando introduzca caracteres en blanco duplicados me los deje como blancos simples, creo que me he explicado correctamente. Os mando el código con comentarios que he sacado, pero que me da una salida extraña, seguro que es una tontería, pero agradecería un poco de orientación.
#include <stdio.h>
main(){
int c;
int blancos;
blancos = -1; //Variable auxiliar para los blancos
while((c = getchar()) != EOF){ //Leemos caracter a caracter hasta el EOF
putchar(c); //Sacaremos a pantalla al pulsar Intro
if(c == ' '){ //Si el caracter introducido es un espacio en blanco
blancos++; //Actualizamos los blancos
while(blancos == 0){ //Mientras sigamos introduciendo blancos
putchar('\b'); //Borramos el carácter blanco introducido
}
}else{
blancos = -1; //Reiniciamos variable auxiliar siempre cuando el carácter no sea un blanco
}
}
return 0;
}
P.D: Sé que este programa se puede hacer con funciones como strchr, etc, pero como habreis notado no es mi intención utilizar este tipo de funciones, es por un tema de aprendizaje. También habreis notado que es estándar puro y duro, y por lo tanto, no depende del S.O. En este caso, es bajo linux, pero estoy segurísimo, que debería funcionar bajo cualquier plataforma y S.O.
Esperando vuestra ayuda, me despido atentamente y os doy las gracias.
Un saludo
Valora esta pregunta


0