Programación General > C/C++

 C : ELIMINAR ESPACIOS EN BLANCO DE UNA CADENA

<< < (3/5) > >>

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

[0] Índice de Mensajes

[#] Página Siguiente

[*] Página Anterior

Ir a la versión completa