• C

how do you save data it disk?

I have a program which stores its data in a list. How can I go about saving the contents of the list to disk so that thay can be read in at a later date?
gnikAsked:
Who is Participating?
I wear a lot of hats...

"The solutions and answers provided on Experts Exchange have been extremely helpful to me over the last few years. I wear a lot of hats - Developer, Database Administrator, Help Desk, etc., so I know a lot of things but not a lot about one thing. Experts Exchange gives me answers from people who do know a lot about one thing, in a easy to use platform." -Todd S.

galkinCommented:
You can first store in first n bytes the number of the items in the list and then items themselves. When you need to read data you can first read n bytes, allocate memory for items and then read items into allocated memory block
0

Experts Exchange Solution brought to you by

Your issues matter to us.

Facing a tech roadblock? Get the help and guidance you need from experienced professionals who care. Ask your question anytime, anywhere, with no hassle.

Start your 7-day free trial
gnikAuthor Commented:
galkin,
Could you explain to me the actual process for getting the information to the disk.
Thanks.
0
galkinCommented:
Actual code depends on the item in the list you want to serialize to and from the disk. I guess everything is clear. Sa you have a list with 5 items and you wrote functions WriteItem and ReadItem that write and read single item to the disk.
First you open a file. Assume you are programming in windows

FILE* stream;
   if( (stream = fopen( "fread.out", "w+" )) != NULL )  
{
int item_count = 5;
// write number of item first
      fwrite( &item_count , sizeof( item_count ), 1, stream );
//write items themselves
for(int i = 0; i < item_count; i++)
{
WriteItem(i);
}
      fclose( stream );  
}

To read
FILE* stream;
   if( (stream = fopen( "fread.out", "r+" )) != NULL )  
{
int item_count;
// read number of item first
      fread( &item_count , sizeof( item_count ), 1, stream );
// allocate memory block dinamically according to the number of //items stored in file
Item *pItem = (Item *)malloc(sizeof(Item) * item_count);
//read items themselves
for(int i = 0; i < item_count; i++)
{
// read single item into memory block
ReadItem(i, pItem + i);
}
      fclose( stream );  
}
0
It's more than this solution.Get answers and train to solve all your tech problems - anytime, anywhere.Try it for free Edge Out The Competitionfor your dream job with proven skills and certifications.Get started today Stand Outas the employee with proven skills.Start learning today for free Move Your Career Forwardwith certification training in the latest technologies.Start your trial today
C

From novice to tech pro — start learning today.

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.