Questions about Files?

fread, fscanf and size of struct

fread, fscanf and size of struct

by weam haleemi -
Number of replies: 3
Picture of GroupEn

doctor in the points2d and 3d exercise we needed to scan a struct of 3 points each of type double from the binary file.. can we use fread(array, sizeof(struct), 1, f)

or is it since the size of struct different than the total size of the 3 double numbers that we cannot use such syntax? although in the exercise session we used sizeof(student) in one of the exercises

In reply to weam haleemi

Re: fread, fscanf and size of struct

by Siba Haidar -

Yes sure

The binary file contains point3d values, so you must read point3d using fread and you must not read 3 doubles because you know the binary representation of point3d may be different (slightlybigger dependingon the platform).

So you read a point3d one at a time and then you decide what to do with the value of each of its fields ... copy some, disregard others... 

In reply to Siba Haidar

Re: fread, fscanf and size of struct

by weam haleemi -
Picture of GroupEn
doctor i used 3 scans of size double and i got accepted.. is it because of suitable testcases or are there exceptions
In reply to weam haleemi

Re: fread, fscanf and size of struct

by Siba Haidar -
You got lucky by chance.
We discussed luck before.
The manual correction will remove the points because
In general
sizeof(point3d) >= 3* sizeof(double)

And not strictly =

So on a different platform successive reading of this form may fail to read the written data as it was.