Dynamic Data Storage

Posted on 2000-04-12
Last Modified: 2010-04-15
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
_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.

Question by:ccheek
  • 3
LVL 10

Accepted Solution

rbr earned 150 total points
ID: 2706986
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[]

LVL 10

Expert Comment

ID: 2707009
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;
LVL 10

Expert Comment

ID: 2707014
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);

Author Comment

ID: 2708862
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!! :)


Featured Post

Technology Partners: We Want Your Opinion!

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Suggested Solutions

Have you thought about creating an iPhone application (app), but didn't even know where to get started? Here's how: ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ Important pre-programming comments: I’ve never tri…
This tutorial is posted by Aaron Wojnowski, administrator at  To view more iPhone tutorials, visit This is a very simple tutorial on finding the user's current location easily. In this tutorial, you will learn ho…
Video by: Grant
The goal of this video is to provide viewers with basic examples to understand and use nested-loops in the C programming language.
The goal of this video is to provide viewers with basic examples to understand and use conditional statements in the C programming language.

733 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question