elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.
 
Inicio Ayuda Ingresar Registrarse
08 Octubre 2008, 12:47  



+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderador: ®®)
| | |-+  Explicacion de un Codigo.
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: 1 [2] Ir Abajo Imprimir
Autor Tema: Explicacion de un Codigo.  (Leído 689 veces)
^TiFa^

Desconectado Desconectado

Mensajes: 672


Need a Love Loan? Borrow some from me :)


Ver Perfil
Re: Explicacion de un Codigo.
« Respuesta #15 en: 16 Mayo 2008, 21:18 »

Que lindo Ferchu  :-*  ahora si entiendo tu punto  :rolleyes:

Se que se ve incoherente... lo que queria era por ejemplo si un archivo tenia 256 caracteres, y con ftell sacaba ese numero (256) lo guardaba en una variable entera obviamente es un numero entero, asignaba esa variable entera a un puntero entero (se que es ilogico y es codigo demas, pero estoy tratando de entender el funcionamiento de los punteros, no lo sabre hasta que no juegue con ellos).

Entonces queria que la variable char en este caso, tuviese la longitud exacta de todos los caracteres de mi archivo (256 en este caso). Como el archivo puede variar, o crecer, por eso queria que char se le asignara justamente los caracteres del archivo y como yo no me los se, pensaba que era un poco ilogico usar char[300] o char[200] o sea no queria estar adivinando.

Se que en estos casos es que se usa malloc,.. cuando uno no sabe la longitud de algo, pero queria conocer otras vias de sacar la longitud de algo sin necesidad de usar malloc. O siempre hay que usar malloc? no hay otro camino o via... Eso es lo que realmente andaba buscando mas vias, aparte de malloc.
En línea

http://chixmes.blogspot.com/

Si quieres saber el valor del dinero, trata de conseguirlo prestado. 

El que se enorgullece de sus conocimientos es como si estuviera ciego en plena luz.
- Benjamin Franklin.

Ferсhu

Desconectado Desconectado

Mensajes: 1.221

Menos palabras y Mas codigos.


Ver Perfil WWW
Re: Explicacion de un Codigo.
« Respuesta #16 en: 16 Mayo 2008, 21:24 »

Citar
cuando uno no sabe la longitud de algo, pero queria conocer otras vias de sacar la longitud de algo sin necesidad de usar malloc. O siempre hay que usar malloc? no hay otro camino o via...

Estas un poco confundida, con malloc no sacas la longuitud con malloc pedis la cantidad memoria q kieras, mientras el programa el programa lo permita.

las otras formas q se me ocurren son un poco mas complicadas q usar malloc, de todas maneras creo q esa funcion es muy sencilla.

Puntero_q_va_a_recibir_la_direccion_de_la_memoria_q_me_van_a_dar=(casteo para adaptar los tipos )malloc(tamaño que necesito);

Edit:

Citar
Se que se ve incoherente... lo que queria era por ejemplo si un archivo tenia 256 caracteres, y con ftell sacaba ese numero (256) lo guardaba en una variable entera obviamente es un numero entero,

Seguro te expresaste mal pero lo claro x las dudas, ftell da la posicion de la ubicacion donde esta, en ese caso daria 256 si el "cursor" esta ubicado en la ultima posicion.
« Última modificación: 16 Mayo 2008, 21:34 por Ferсhu » En línea

^TiFa^

Desconectado Desconectado

Mensajes: 672


Need a Love Loan? Borrow some from me :)


Ver Perfil
Re: Explicacion de un Codigo.
« Respuesta #17 en: 16 Mayo 2008, 21:56 »

Jajaja dios volvi a hacerlo  :-X  efectivamente lo que queria o estaba tratando de decir era que malloc reservaba la cantidad de memoria no que sacaba la longitud... volvi a liarme cuando aprendere a expresar realmente lo que mi cabeza esta pensando  :-\

Haber dejame hacer un intento, para que se me pueda entender. Se y sabia que malloc reserva memoria, lo que intentaba decir era.. que obtenia el tamanio de un archivo con seek_end lo guardaba con ftell en una variable tipo entero, usaba un puntero demas para guardar el valor de esa variable entera (256). Y pensaba y sigo pensando que *p = 256 en este caso lo cual yo creo que :

char a[256] es lo mismo que char a[*p]  y si *p vale 256 lo habia confirmado con un :

printf("%d", p);

Asi que si el archivo FILE crecia o disminuia ftell siempre sacara el valor real leyendo hasta el final del archivo, por lo que char[*p] siempre tendra la misma longitud que ftell devuelva. Por eso pense ironicamente que esto era una via de asignar una longitud, sin necesidad de usar malloc para reservar el espacio justo no asignar memoria dinamica :) Y comprobe que ftell asigna el valor en plena ejecucion del programa no cuando el programa termina, y como ftell estaba antes de la declaracion de char, pues char tendria una longitud del tamano del puntero que recoge el resultado de ftell.

Y ya que conoces otras vias fuera de usar malloc para la cuestion dinamica, me interesaria ver algun ejemplo conoces alguna web con ejemplos?
En línea

http://chixmes.blogspot.com/

Si quieres saber el valor del dinero, trata de conseguirlo prestado. 

El que se enorgullece de sus conocimientos es como si estuviera ciego en plena luz.
- Benjamin Franklin.

winfuck

Desconectado Desconectado

Mensajes: 254



Ver Perfil
Re: Explicacion de un Codigo.
« Respuesta #18 en: 17 Mayo 2008, 02:55 »


Tifa :: Quiero usar amarok en Gnome.
Gente :: No se puede.
Tifa :: Porque no puedo?
Gente :: Porque amarok no viene tecnicamente para funcionar en Gnome.
Tifa :: Pero puedo bajarme QT3 para usar amarok en Gnome.
Gente :: NO, NO, no se puede! se sale del estandar Gnome, por eso Gnome trae GTK+


OMFG, quien te haya dicho eso es un verdadero IDIOTA! mecere la muerte, no hay ningun tipo de problemas ^TiFa^, eres libre de usar las librerias que quieras donde quieras.

con respecto a lo del main, hay algo llamado estandares, y deberias leerlos.
algunos links de intereses son:
http://www.lysator.liu.se/c/rat/title.html
http://www.lysator.liu.se/c/schildt.html
http://www.open-std.org/jtc1/sc22/wg14/
http://www.open-std.org/JTC1/SC22/WG14/www/standards
http://www.c-faq.com/top.html

lee eso, te puede ayudar un poco, obio que leyendo un buen libro tambien podrias darte cuenta porque la razon de lo que preguntas.

cya
« Última modificación: 17 Mayo 2008, 03:02 por winfuck » En línea

|_|0|_|
|_|_|0|
|0|0|0|
Ferсhu

Desconectado Desconectado

Mensajes: 1.221

Menos palabras y Mas codigos.


Ver Perfil WWW
Re: Explicacion de un Codigo.
« Respuesta #19 en: 17 Mayo 2008, 04:22 »

Citar
Asi que si el archivo FILE crecia o disminuia ftell siempre sacara el valor real leyendo hasta el final del archivo, por lo que char[*p] siempre tendra la misma longitud que ftell devuelva. Por eso pense ironicamente que esto era una via de asignar una longitud, sin necesidad de usar malloc para reservar el espacio justo no asignar memoria dinamica smiley Y comprobe que ftell asigna el valor en plena ejecucion del programa no cuando el programa termina, y como ftell estaba antes de la declaracion de char, pues char tendria una longitud del tamano del puntero que recoge el resultado de ftell.

me pregunto si te kedo claro q de esa forma no se puede jeje espero q si.

como ya te dije usas malloc, si el archivo aumenta el tamaño con realloc agrandas la cantidad de memoria, pero pensemos un pokito, si yo abro un archivo el SO no lo puede modificar por q esta siendo usado, asi q el unico q puede aumentar el tamaño es el mismo programa. Asi q en este caso solo con malloc te alcanza, Y como pide memoria dinamicamente no vas a tener problema con especificar los tamaños.

otra forma alternativa a malloc seria con virtualalloc y sus apis derivadas pero termina siendo mas complicado jaja.
En línea

^TiFa^

Desconectado Desconectado

Mensajes: 672


Need a Love Loan? Borrow some from me :)


Ver Perfil
Re: Explicacion de un Codigo.
« Respuesta #20 en: 17 Mayo 2008, 22:08 »

Gracias bebines  :-*

Seguire indagando he investigando otras opciones de almacenamiento de espacio dinamico y justo con las funcioncitas que dice Ferchu.

Sobre los parametros y main... Nah... dejemoslo asi, para hacerselo mas entendible al otro, me parece que obviare parametros 'extras' del main.

 :-*
En línea

http://chixmes.blogspot.com/

Si quieres saber el valor del dinero, trata de conseguirlo prestado. 

El que se enorgullece de sus conocimientos es como si estuviera ciego en plena luz.
- Benjamin Franklin.

^TiFa^

Desconectado Desconectado

Mensajes: 672


Need a Love Loan? Borrow some from me :)


Ver Perfil
Re: Explicacion de un Codigo.
« Respuesta #21 en: 21 Mayo 2008, 20:23 »

Hola nuevamente cielos  :-*

He indagado mas hacia adelante, y efectivamente mi codigo nunca estuvo malo (A excepcion de los parametros extras del main).

Pero efectivamente, averigue. en el ANSI C99 (el ultimo standard de C) si se puede crear un array sin saber el tamanio el tiempo de compilar, o sea que efectivamente se busca el valor en plena ejecucion con ftell, y se asigna como longitud a un vector sin problema alguno. Codigo compilado tanto en gcc como en Windows, totalmente funcional.

Gracias, creo que ya resolvi mi duda  :rolleyes:
En línea

http://chixmes.blogspot.com/

Si quieres saber el valor del dinero, trata de conseguirlo prestado. 

El que se enorgullece de sus conocimientos es como si estuviera ciego en plena luz.
- Benjamin Franklin.

Páginas: 1 [2] Ir Arriba Imprimir 
Ir a:  







Consolas     La Web de Goku     MilW0rm     MundoDivx

Hispabyte     Truzone     TodoReviews     ZonaPhotoshop

hard-h2o modding    Foros de ayuda    Yashira.org    Videojuegos    indetectables.net   

Noticias Informatica    Seguridad Informática    ADSL    Foros en español    eNYe Sec

Todas las webs afiliadas están libres de publicidad engañosa.

Powered by SMF 1.1.6 | SMF © 2006-2008, Simple Machines LLC