quitar espacios en cadena ?

Iniciado por Darioxhcx, 26 Julio 2010, 20:01 PM

0 Miembros y 1 Visitante están viendo este tema.

Darioxhcx

tengo una duda :P
como puedo quitar el caracter ' ' de una cadena , suponiendo que la cadena la tome con gets(cadena);

digamos que a "hola como estas"
deberia quedarme como "holacomoestas"

alguna sugerencia :/ ?
yo no entiendo como hacerlo :/
gracias
saludos

pd: ahh en C , no en c++ ;P


.:BlackCoder:.

En C++ hay una funcion o manipulador que lo hace  :xD En C, bueno dicen que los caminos son infinitos, pero lo mas seguro es que necesites memoria dinamica y cadenas auxiliares...

Saludos
"No te esfuerzes por saber mas, esfuerzate por ser el mejor en lo que sabes... Y asi sabras mas" .:BlackCoder:. jajaja




Darioxhcx

:xD

o aunque sea como detectar un espacio , seria mas facil creeria
" " = \0 ? ni hay no ' el \0 es nulo , pero no espacio no ?
toy flasheando cualquiera me parece XDDD

.:BlackCoder:.

Pes...
if (cadena[i]==' ') savetheposition;

Guardas la posicion para que sepas hasta adonde te interesa la cadena... O tambien quizas puedas usar strtok()... Pon el code  :xD

Saludos...
"No te esfuerzes por saber mas, esfuerzate por ser el mejor en lo que sabes... Y asi sabras mas" .:BlackCoder:. jajaja




leogtz

#4
#include <stdio.h>
#include <string.h>
int main(void)
{
   char *cadena = "Hola mundo!";
   if(strchr(cadena, ' '))
   puts("Si");
   else
   puts("No");
   return 0;
}


#include <stdio.h>
void squeeze(char s[], char c)
{
unsigned int i, j;
for(i = j = 0; s[i] != '\0'; i++)
if(s[i] != c)
s[j++] = s[i];
s[j] = '\0';
}
int main(void)
{
    char cadena[] = "Hola mundo";
    squeeze(cadena, ' ');
    puts(cadena);
    return 0;
}


Es strchr() no strchar().
Código (perl) [Seleccionar]

(( 1 / 0 )) &> /dev/null || {
echo -e "stderrrrrrrrrrrrrrrrrrr";
}

http://leonardogtzr.wordpress.com/
leogutierrezramirez@gmail.com

.:BlackCoder:.

Pero strchar() es para decir si hay o no hay dicho caracter, mas no cuantos... si no me equivoco, yo de c no c  :xD

Saludos...
"No te esfuerzes por saber mas, esfuerzate por ser el mejor en lo que sabes... Y asi sabras mas" .:BlackCoder:. jajaja




Darioxhcx

gracias ;­D
strchar seguramente esta en string.h no '
weno ire a averiguar a seguir leyendo ;P
gracias ^^

.:BlackCoder:.

Es como dice Leo strchr()...

Y esa solucion que te dieron ta muy wena  :xD

Saludos...
"No te esfuerzes por saber mas, esfuerzate por ser el mejor en lo que sabes... Y asi sabras mas" .:BlackCoder:. jajaja




cbug

Esta es mi solución, pero sin modificar la cadena original, sino colocándola en una nueva.

#include <stdio.h>
#include <stdlib.h>
#include <string.h>


int main()
{
char s[] = "HOLA COMO ESTAS ?                 BIEN Y TU";

char *tmp, *aux;

aux = malloc(strlen(s));
tmp = malloc(strlen(s));

tmp = strtok(s, " ");

while(tmp != NULL)
{
strcat(aux, tmp);
tmp = strtok(NULL, " ");
}

free(tmp);
puts(aux);
free(aux);

return 0;
}


leogtz

@cbug, no necesitas reservar espacio para "tmp".
Código (perl) [Seleccionar]

(( 1 / 0 )) &> /dev/null || {
echo -e "stderrrrrrrrrrrrrrrrrrr";
}

http://leonardogtzr.wordpress.com/
leogutierrezramirez@gmail.com