Programación General > C/C++
C : ELIMINAR ESPACIOS EN BLANCO DE UNA CADENA
haevan:
--- Cita de: "fachamix" --- ¿?¿?¿?¿?¿?¿?¿?¿¿?
si la necesita a string.h , donde crees que esta strchr() ???????
y dudo de la funcionalidad del codigo que has escrito, si alguien lo puede probar, buenisimo, ya que aqui no tengo ningun compilador para probar.
saludos amigo
--- Fin de la cita ---
perdon, he tenido un despiste
yo lo he probado en linux (compilo con gcc) y funciona, que alguien lo pruebe en windows y asi salimos de dudas
fachamix:
el codigono funciona en windows.
compila perfectamente pero no funciona.
use codeblocks con MingW.
aqui tu codigo:
--- Código: C++ --- #include <iostream> using namespace std; int main(){ cout << "probando quita espacios" << endl; char*tmp; while((tmp=strchr("HOLA PROBANDO ESTO - CHE",32))!=NULL) sprintf(tmp,"%s",tmp+1); return 0;}
probe poniendo y sacando string.h , no funciona, salta error en el sistema.
m0skit0:
--- Cita de: "fachamix" ---salta error en el sistema
--- Fin de la cita ---
Violación de memoria, seguramente (la próxima vez es de agradecer que pongas qué error es). Es lógico porque no has reservado memoria. char *tmp está muy bien, pero no te reserva la memoria para la futura cadena.
Tienes 2 opciones: o usas malloc() o defines un vector de tamaño fijo, rollo char tmp[256].
EDITO: estoy equivocado, strchr() sólo devuelve un puntero dentro de la misma cadena o NULL.
Saludos
Eternal Idol:
En realidad el quiere trabajar siempre sobre el mismo buffer,a fin de cuentas el tamaño de la cadena sera siempre igual o menor ... el problema es que la cadena esa ira a parar a la seccion de datos de solo lectura. Asi, poniendo la cadena en la pila, funciona:
--- Código: Text ---#include <iostream> using namespace std; int main(){ cout << "probando quita espacios" << endl; char*tmp; char h[] = "HOLA PROBANDO ESTO - CHE"; while((tmp=strchr(h,32))!=NULL) sprintf(tmp,"%s",tmp+1); cout << h; return 0;}
PD. El != NULL sobra ;)
fachamix:
lo probe ahora, y si funciona asi.
pero no entiendo , como hace para sacar los espacios.
se para que sirve strchr.
cuando sprintf, no se porque hace tmp+1
tampoco se, en que momento SACO LOS ESPACIOS A h
una mano señores, de explicacion gaucha de instrccion por instruccion, como un cuento jajajaja.
Navegación
[#] Página Siguiente
[*] Página Anterior
Ir a la versión completa