Thread: saving/retriving strctures from files

  1. #1

    Question saving/retriving strctures from files

    i have an array of a a structure, called videos and i want to save it to file and then load it back in to memory later, so far i have the following code:

    //to open the file, fname being the file name, and opp being the mode either rb or wb

    tfile = fopen(fname, opp);

    //to write the structure to the file
    fwrite(&video, 8800, 1, tfile);

    this bit works i have looed in the file and it apers to contain the correct information, however the read bit dosent work, the code is the same except for this:

    fwrite(&video, 8800, 1, tfile);

    anyone know how to get this to work??

  2. #2
    You should not put a hardcode number in the function call-- you should always use the 'sizeof' statement.

    fwrite(void *buffer,size_t elem_size,int num_elem,FILE *stream);

    buffer = your buffer filled with data-- this can be a single struct, or a single-dim'd array of struct of like-size.

    elem_size = size of individual structure. If you are writing an array of structs, this could simply be the size of the entire array.

    num_elem = number of individual structures/elements. If you were writing an entire array, then this could just be a one, so long as 'elem_size' is as big as all the structures in the array.

    stream = record for the file control block.


    So, instead of using fwrite the way you do, rewrite it like so:

    typedef struct
       int   yearMade;         /* when video made (c) */
       char actors[5][35];     /* actor names */
       long   runTime;         /* running time, minutes */
       char   rating[6];       /* movie rating */
    int main(void)
       videoStruc video;       /* declare vars */
       FILE tfile = 0L;
    fopen() is very nearly the same, just moving data in a different direction. In both cases, you should position the file pointer prior to reading/writing so that it is where you expect it. You should also be checking for errors.


  3. #3


    i tried:

    fwrite(&video, sizeof(video), 1, tfile);
    fwrite(&video, sizeof(video), 1, tfile);

    and it still does not read the file but it does write them.

  4. #4

    Red face

    never mind got it working

Popular pages Recent additions subscribe to a feed

Similar Threads

  1. add source files to embedded VC 4.0
    By George2 in forum C++ Programming
    Replies: 4
    Last Post: 06-13-2006, 03:28 AM
  2. *.cpp and *.h files understanding
    By ElastoManiac in forum C++ Programming
    Replies: 4
    Last Post: 06-11-2006, 04:45 AM
  3. Linking header files, Source files and main program(Accel. C++)
    By Daniel Primed in forum C++ Programming
    Replies: 3
    Last Post: 01-17-2006, 11:46 AM
  4. Multiple Cpp Files
    By w4ck0z in forum C++ Programming
    Replies: 5
    Last Post: 11-14-2005, 02:41 PM
  5. header and source files
    By gtriarhos in forum C Programming
    Replies: 3
    Last Post: 10-02-2005, 03:16 AM