• C

Dynamic Data Storage

I have a program that will read a complete line of data from a text-file into a data structure (MANY vars in the structure).

The data file currently holds 8000 lines of data. I was at first tempted to define an arry of the structures that i have.....ie...
_MyTypedefedStruc MyPtrsToTheTypedefedStructure[8000];

But, i have decided that the data file may increase in size later on (more data added, thus, more structures would have to be added to the static array, so that they could be read in later.)

But i dont wanna do it this way! I dont want to have to recompile and distribute the exe each time this happens!!!

My question is this (obvious now):

How can i dynamicly define these structures?

I have looked at link-lists, and it seems to be the best way currently, but i would prefer not to use this method (lack of information and i dont like all the extra crap required for them).

The person that leads me to information that will help get me on track so i can dynamicly allocate structures will get the points.

They will be handed to a person tht gives full source (commented!) on linked lists too. But, as i want to avoid the use of link-lists, the points WILL be denied if no one else has taken a bash at this question.

BTW I will use C/C++ or for this project, i will NOT use MFC, dont bother with mfc replys.

Im working with Visual C version 6 and this program will use directx under the windows 98 environment.

Thanks people, i know you'll help this poor old hobby programmer.

Who is Participating?
rbrConnect With a Mentor Commented:
2 pass system

First read the file in but don't store the data just count the number of elements

rewind the file

_MyTypedefedStruc *pdata;

pdata = calloc (countedelements,sizeof (_MyTypedefedStruc));

if (pdata == NULL) {
/* Error occured */
 } else {
  read in the data and store id in pdata[]

Or a demo source code




#include <stdio.h>
#include <stdlib.h>

struct my_struct {
char text[100];
int main (int argn,char argv[])
     FILE *fp;
     struct my_struct *pdata;
     char buffer[100];
     int i,count=0;

      fp=fopen ("datafile.txt","r");

      while (EOF=fscanf (fp,"&s",buffer)) {
      rewind (fp);
     pdata = calloc (count,sizeof (struct my_struct)) {
      if (pdata != NULL)
         for (i=0;i<count;i++) {
             fscanf (fp,"&s",pdata[i].text);
     fclose (fp);
      return 0;
Sorry !

fscanf (fp,"&s",buffer)
should be
fscanf (fp,"%s",buffer)

fscanf (fp,"&s",pdata[i].text);
should be
fscanf (fp,"%s",pdata[i].text);
ccheekAuthor Commented:
I have to admit i didnt know calloc would allow this!

I did in fact look at it a while back and thought "Naahhhh surely not!" (and didnt bother coding a sample app.)

Thankyou for a quick, and simple answer rbr.

I can now continue my project, i cant believe something so stooopid stumped me!! :)

Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

All Courses

From novice to tech pro — start learning today.