Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people, just like you, are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
Solved

Dynamic Data Storage

Posted on 2000-04-12
4
182 Views
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 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.

Chris.
0
Comment
Question by:ccheek
  • 3
4 Comments
 
LVL 10

Accepted Solution

by:
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[]

}
0
 
LVL 10

Expert Comment

by:rbr
ID: 2707009
Or a demo source code


datafile.txt


one
two
three


readin.c

#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)) {
          count++;
     }
      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;
}
   
0
 
LVL 10

Expert Comment

by:rbr
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);
0
 

Author Comment

by:ccheek
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!! :)

Chris.
0

Featured Post

Optimizing Cloud Backup for Low Bandwidth

With cloud storage prices going down a growing number of SMBs start to use it for backup storage. Unfortunately, business data volume rarely fits the average Internet speed. This article provides an overview of main Internet speed challenges and reveals backup best practices.

Question has a verified solution.

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

Suggested Solutions

Title # Comments Views Activity
logging Access violation 6 19
negation in C function 14 161
Autosar OS Multicore Share Resources confusion ? 2 70
Please explain C language error codes ? 5 26
This tutorial is posted by Aaron Wojnowski, administrator at SDKExpert.net.  To view more iPhone tutorials, visit www.sdkexpert.net. This is a very simple tutorial on finding the user's current location easily. In this tutorial, you will learn ho…
This is a short and sweet, but (hopefully) to the point article. There seems to be some fundamental misunderstanding about the function prototype for the "main" function in C and C++, more specifically what type this function should return. I see so…
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.
Video by: Grant
The goal of this video is to provide viewers with basic examples to understand and use while-loops in the C programming language.

856 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