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
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
: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
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...
#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().
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...
gracias ;D
strchar seguramente esta en string.h no '
weno ire a averiguar a seguir leyendo ;P
gracias ^^
Es como dice Leo strchr()...
Y esa solucion que te dieron ta muy wena :xD
Saludos...
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;
}
@cbug, no necesitas reservar espacio para "tmp".
:o eso es lo que no pude entender... a qué se debe?
Cita de: cbug en 26 Julio 2010, 21:06 PM
:o eso es lo que no pude entender... a qué se debe?
debido a que strtok devuelve un puntero a un char.
Pes porque es un puntero jeje le das la direccion de la cadena pero "cortada" Y en ese malloc() creo que falta el casting... ademas estas dandole espacio de mas a aux... lo mejor seria contar los espacios y restarcelos a strlen(s)....
Saludos...
PD: Mas o menos eso es lo que yo habia pensado...
¡Buenas!
Aqui va otra, no se si mas rapida o no, pero puede que con alguna linea menos de codigo:
char* squeeze(char *s,char c)
{
char *resto;
while((resto = strchr(s,c)))
strcpy(resto,resto+1); /* siempre se puede hacer: strlen(s+1) = strlen(s) - 1 */
return s;
}
¡Saludos!
asdaasd para para paraa que todavía no lei sobre punteros y lo que lei no lo entendi xDDD :xD
bueno , igual tengo tarea pa la noche ;P
Ok ok. Que nos emocionamos y no sabiamos cuanto sabias... :xD
En ese caso la solucion que mejor te viene es la de Leo Gutiérrez.
¡Saludos!
Exacto...
OFF TOPIC : Do-While estaría bueno que propongas un problema en C cada cierto período y se pueda resolver entre todos, para así poder analizar distintas soluciones según el nivel que tenga cada uno y así contribuir aún más.
Este problema es sencillo, pero a la vez bastante útil ciertas veces.
Si quieres ver ejercicios dificiles mira los de "las olimpiedas informaticas españolas" eso si es feo :xD
Saludos...
Difíciles o no, estaría bueno resolver entre todos. :D
Weno metete en la pagina saca uno y nos ponemos a hacerlo horita ando pariendo con archivos :xD...
Cita de: .:BlackCoder:. en 26 Julio 2010, 23:22 PM
Si quieres ver ejercicios dificiles mira los de "las olimpiedas informaticas españolas" eso si es feo :xD
Jur jur jur... ejercicios feos feisimos. Mas feos que los Borbones... Trabajando en C++ aun se tiene ventaja, por la STL, que es estandar y puedes utilizarla, pero en C, el echo de tener que estar construyendo las estructuras de datos para cada problema en el que hacen falta es una autentica locura. Otra fuente de demencia son los problemas en los que la salida no quedan bien definida y tienes que resolver el problema ajustando la salida por ensayo y error...
http://www.olimpiada-informatica.org/?cmd=inici
¡Saludos!
Advertencia - mientras estabas escribiendo, una nueva respuesta fue publicada. Probablemente desees revisar tu mensaje.
Pero propón uno o dos a lo sumo, sino luego se hace tedioso y mucho desorden resolver todos :P
A ver, yo no tengo imaginacion para los ejercicios, y de todas formas tampoco me parece correcto empezar un hilo sobre ello, siendo que en el apartado de Programacion general hay un subforo de Ejercicios, si quieres puedes ir cogiendo problemas de ese subforo.
Siento no hacer lo que planteas, pero lo que pides ya existe. Otra cosa es que escojas el problema que quieras o mas te interese, y lo plantees para que lo comentemos.
Ademas, todo esto ya queda offtopic. :xD
¡Saludos!
Cita de: cbug en 26 Julio 2010, 23:09 PM
Exacto...
OFF TOPIC : Do-While estaría bueno que propongas un problema en C cada cierto período y se pueda resolver entre todos, para así poder analizar distintas soluciones según el nivel que tenga cada uno y así contribuir aún más.
Este problema es sencillo, pero a la vez bastante útil ciertas veces.
¡Excelente idea! yo me apunto :laugh:
Cita de: do-while en 26 Julio 2010, 23:31 PM
Cita de: .:BlackCoder:. en 26 Julio 2010, 23:22 PM
Si quieres ver ejercicios dificiles mira los de "las olimpiedas informaticas españolas" eso si es feo :xD
Jur jur jur... ejercicios feos feisimos. Mas feos que los Borbones... Trabajando en C++ aun se tiene ventaja, por la STL, que es estandar y puedes utilizarla, pero en C, el echo de tener que estar construyendo las estructuras de datos para cada problema en el que hacen falta es una autentica locura. Otra fuente de demencia son los problemas en los que la salida no quedan bien definida y tienes que resolver el problema ajustando la salida por ensayo y error...
http://www.olimpiada-informatica.org/?cmd=inici
¡Saludos!
Advertencia - mientras estabas escribiendo, una nueva respuesta fue publicada. Probablemente desees revisar tu mensaje.
Me imagino qué tedio sería participar en C. Yo preferiría concursar en C++. :D
Yo no tendría problema con un hilo en el cual se planteen ejercicios para evaluar distintas formas de resolver problemas. El asunto es que si se hacen ejercicios de complejidad baja a media, a la larga quedara una guía de tareas incluso con múltiples opciones para los mas vagos.
También esta el drama que hay que estar controlando a cada rato que ningún usuario nuevo plantee un ejercicio en ese hilo, porque si no seria muy fácil que un usuario se registre, plantee un ejercicio, y como resultado obtenga la tarea para el y para todo su curso.
Por esas dos cosas, lo ideal seria que hagan algo así en el subforo de ejercicios (http://foro.elhacker.net/ejercicios-b38.0/), que de hecho ya existen hilos similares y no solo de C/C++, si no de varios lenguajes.
De paso cierro ya que la duda principal esta resuelta y el hilo entro en offtopic hace rato.
Saludos!