[C con Clase] Duda con estructuras y ficheros

Steven Davidson srd4121 en njit.edu
Dom Ago 14 21:39:20 CEST 2011


Hola Antonio,

Creo que nadie te ha contestado, así que lo haré yo :)

2011/7/29 Antonio Cascales <antonio.cascales en gmail.com>:
> Hola a todos:
>
>    Estoy aprendiendo acerca de las estructuras y de los ficheros, pero me
> surgen algunas dudas.
>
>    Estoy intentando crear una estructura, pero me gustaría que fuese
> dinámica. Sé que puedo hacerlo con un array, indicando el número de
> elementos que quiero reservar, pero he leído que eso implica reservar
> memoria que puede tanto quedarse corta, como sobrar por todos lados.
>
>    Por otra parte, y aquí es donde viene mi duda, sé que puedo crear una
> estructura con punteros, pero no termino de entender cómo. Además, me
> gustaría que el programa que contenga esta estructura, me permitiese añadir
> tantos registros como quisiera, sin tener que especificar el número, y no sé
> como hacerlo.

Bien. Lo que necesitas es una estructura dinámica de datos (EDD). En
este caso, creo que deberías implementar una lista dinámicamente
enlazada. Te aconsejo que mires nuestro curso de EDD y en particular
el primer capítulo que trata acerca de las listas dinámicamente
enlazadas. La página del curso de EDD es:
http://c.conclase.net/edd/index.php

>

[CORTE]

>    por otra parte, si quiero guardar los datos de dicha estructura en un

En este caso, sugiero que crees otra estructura para agrupar y
representar toda la información que quieres guardar, tanto en memoria
como en el fichero, dentro de la estructura que representa un nodo de
la lista dinámicamente enlazada. Por ejemplo,

struct registro
{
  char nombre[20];
  char apellidos[50];
  int edad;
};

struct nodo
{
  registro info;
  nodo *sig;
};

A la hora de guardar la información en el fichero, tendrás que acceder
a cada nodo para acceder a su 'info'. Una vez que accedas al registro,
podrás guardarlo en el fichero. Eso sí, esto ya depende del tipo de
fichero; si es binario, entonces puedes enviar el registro entero, si
no, entonces tendrás que enviar y posiblemente convertir la
información a cadenas de caracteres para un fichero en modo texto.

> fichero, ¿cómo tendría que hacerlo? ¿Cómo indico a la hora de guardarlo a
> que usuario pertenece?
>

En primer lugar, depende de la influencia de este concepto de
"usuario". Si cada usuario tiene su propia lista, entonces podrías
escribir el nombre del usuario primero en el fichero como si fuese un
"bloque" de datos seguido del nombre de tal usuario. En general, esto
ya depende de tu diseño de cómo organizas la información en tu
fichero.

>    Pido disculpas por la extensión del mail, y agradezco las
> rectificaciones, respuestas o consejos que podáis darme.
>

No te preocupes por la extensión, con tal de que plasmes todas las
dudas e inquietudes y cualquier información que necesitemos saber para
poder ayudarte.


Espero que todo esto te oriente.

Steven




Más información sobre la lista de distribución Cconclase