Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: Redisteon en 10 Agosto 2013, 21:45 pm



Título: Estructuras en C
Publicado por: Redisteon en 10 Agosto 2013, 21:45 pm
Mi pregunta es si se puede hacer que:

Generar una estructura en tiempo de ejecución del programa un ejemplo quiero generar registros y guardarlos en archivos cada uno con sus respectivos campos pero a la hora de cargar esos archivos se implementa un proceso pero yo quiero saber en caso de que se pueda como hacer que se genere una estructura en tiempo pensé en modificar el código y compilarlo de nuevo en un archivo .h aparte pero es algo tedioso y depende el compilador pero quisiera saber otra forma

Tambien otra forma seria generar espacio dinámico y generar las variables y guardarlas ahi pero los datos estarían dispersos y no seria eficiente.

O ir por archivo y generar busquedas por el archivo creo que es la mejor pero quiero saber si se puede generar una estructura de datos(Registro en tiempo de ejecucion) y guardar los datos al comenzar el programa y que los reconozca gracias


Título: Re: Estructuras en C
Publicado por: amchacon en 11 Agosto 2013, 02:43 am
No me he enterado de nada  :huh:

Guardar, se puede guardar las variables en un archivo y cargarlas luego. Si mantienes un orden al guardarlas/cargarlas no hay problema alguno.


Título: Re: Estructuras en C
Publicado por: Redisteon en 11 Agosto 2013, 05:19 am
Si exacto ya lo se pero hay un pequeño problema.

Si pero un ejemplo una base de datos cuando guardas la información la tienes de una manera en si la tratas de una manera como variable o estructura  pero cuando la cargas la tratas como variable como la puedo tratar como una estructura esa es mi pregunta si se puede manejar como estructura después de cargar la información suponiendo que se pueden añadir mas estructuras (registros)

Por ejemplo un programa tiene una estructura alumno con 3 campos y tiene la posibilidad de anexar mas registros por ejemplo otro biblioteca 4 campos
la primera vez tiene en su código la estructura alumno cuando guarda y carga la información del archivo alumno (suponiendo que cada registro se almacena en un archivo diferente) el programa la reconoce pero después de ejecutar de nuevo el programa se crea otra estructura o registro biblioteca con 3 campos pone la cabecera del archivo sus campos, tipo de archivo, tamaño, y sus registros o datos cuando vuelve a cargar el programa debe cargar los datos de los 2 archivos estudiante y biblioteca pero al principio tenia la estructura del estudiante pero no la de biblioteca y al cargarla se necesita reservar memoria para almacenar información pero esa información hace que se maneje como variables independientes como puedo hacer o que tengo que hacer en caso de que se pueda tratar esa información como estructura o un conjunto.
 


Título: Re: Estructuras en C
Publicado por: eferion en 11 Agosto 2013, 13:17 pm
Una estructura:

Código
  1. struct test
  2. {
  3.  int numero;
  4.  char dato;
  5. };

Puedes manejarla como información binaria pura ( no recomendado si se va a intercambiar información entre diferentes plataformas )

Código
  1. struct test estructura;
  2.  
  3. // ...
  4.  
  5. char* buffer = (char*)&estructura;

O bien puedes acceder a cada uno de sus elementos como si fuesen variables independientes:

Código
  1. struct test estructura;
  2.  
  3. estructura.numero = 7;
  4. estructura.dato = 'A';
  5.  
  6. int numero = estructura.numero;
  7. char dato = estructura.dato;

Si tienes una tabla en una base de datos para este ejemplo, lo normal sería que dicha tabla tuviese dos campos... uno tipo int y otro tipo char... al escribir en la base de datos, almacenas en el int el contenido de 'estructura.numero' y en el char el contenido de 'estructura.dato'... para leer de la base de datos... lo mismo, lo que tiene el campo int lo almacenas en estructura.numero y ...

Como ves nada del otro mundo.


Título: Re: Estructuras en C
Publicado por: amchacon en 11 Agosto 2013, 19:25 pm
La estructuras no existen en el programa, solo son una forma de organizar variables en el codigo.

Lo que tú dices, podría intentar resolverse con polimorfismo pero creo que es más adecuado que emplees otro método más eficaz.