• Jueves 28 de Marzo de 2024, 20:22

Mostrar Mensajes

Esta sección te permite ver todos los posts escritos por este usuario. Ten en cuenta que sólo puedes ver los posts escritos en zonas a las que tienes acceso en este momento.


Mensajes - haevan

Páginas: [1]
1
C/C++ / Re: Insertar ceros por la izquierda
« en: Domingo 17 de Mayo de 2009, 04:01 »
Cita de: "m0skit0"
Cita de: "haevan"
no he usado itoa porque soy de linux y en linux itoa no tiene referencia en man) gracias por el aviso
itoa es estándar

Cita de: "locazopro"

estoy prácticamente seguro que no lo es. :o

tanto si lo es como si no... si tengo el man y el sprintf que me hace lo que yo quiero... ¿para que voy a ir a la web a buscar el itoa? xD la flojera me puede sorry

EI: juntando mensajes consecutivos del mismo usuario.

Cita de: "m0skit0"
Si valor es un número entero... atoi(valor) no tiene ningún sentido entonces. Habrás querido decir itoa(valor, buffer, 10), y habría que declarar un char *buffer con suficiente espacio para que quepa la cadena resultante. Esto habría que hacerlo dependiendo del entero valor y por tanto con malloc(). En fin, bastante más complicado de cómo lo pintas ;) Ah, y no te olvides las etiquetas de código  ^_^

otra cosa que no entiendo es que tenga que reservar memoria, cuando lo que estoy haciendo no es un volcado de datos, si no hacer que mi puntero char apunte a la direccion de memoria que devuelve sprintf

2
C/C++ / Re: C : ELIMINAR ESPACIOS EN BLANCO DE UNA CADENA
« en: Viernes 15 de Mayo de 2009, 14:37 »
Cita de: "m0skit0"
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].

no lo pillo, no vuelco los datos a tmp, solo le hago apuntar a una direccion de memoria que me devuelve strchr, no entiendo que tenga que reservar memoria

3
C/C++ / Re: Insertar ceros por la izquierda
« en: Viernes 15 de Mayo de 2009, 14:17 »
Cita de: "m0skit0"
Si valor es un número entero... atoi(valor) no tiene ningún sentido entonces. Habrás querido decir itoa(valor, buffer, 10), y habría que declarar un char *buffer con suficiente espacio para que quepa la cadena resultante. Esto habría que hacerlo dependiendo del entero valor y por tanto con malloc(). En fin, bastante más complicado de cómo lo pintas ;) Ah, y no te olvides las etiquetas de código  ^_^

Saludos

corregido http://#p143207 (a mi forma... no he usado itoa porque soy de linux y en linux itoa no tiene referencia en man) gracias por el aviso

Aclaracion: sprintf devuelve un puntero a la cadena resultante, como no la voy a guardar en ninguna variable uso NULL como destino

un puntero es una direccion de memoria (4 bytes independientemente de lo larga que sea la cadena), no guarda los datos en si

4
C/C++ / Re: Insertar ceros por la izquierda
« en: Jueves 14 de Mayo de 2009, 13:29 »
Para aquellos que entraron atraidos por el asunto del hilo:

si tenemos un entero valor (del que partimos):

Código: C
  1. int i=4-strlen(atoi(valor));
  2. sprintf(resultado,"%4s",valor);
  3. while(i--)
  4.   if (resultado[i]==32) resultado[i]='0';
  5.  

No lo he probado (si hay algun detalle que me lo chafe me habre despistado), pero la base es esa

EDITO: Esta mal, se me volvio a ir la olla , con el atoi queria hacer todo lo contrario (pasar de entero a cadena)

cambiad
Código: C
  1. atoi(valor)
  2.  
por
Código: Text
  1. sprintf(NULL,"%s",valor)
  2.  
en la linea 1

5
C/C++ / Re: C : ELIMINAR ESPACIOS EN BLANCO DE UNA CADENA
« en: Jueves 14 de Mayo de 2009, 03:35 »
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

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

6
C/C++ / Re: C : ELIMINAR ESPACIOS EN BLANCO DE UNA CADENA
« en: Lunes 11 de Mayo de 2009, 15:01 »
en 3 lineas:

Código: C
  1. char*tmp;
  2. while((tmp=strchr(cadena,32))!=NULL)
  3.   sprintf(tmp,"%s",tmp+1);
  4.  

32 es el codigo de el caracter de espaciado

ademas asi no necesitas el string.h

EDITO: si se necesita string.h, se me fue la olla sorry xD

Páginas: [1]