How do I tell in a better way how many records there are in a binary file before I open up the file and read the records into an array for example?
MyFile = fopen("DATA.dat", "rb");
i = 0;
while (feof(MyFile) == 0) {
fread(&tempReadingRecord,sizeof(tempReadingRecord), 1, file);
if (feof(MyFile) == 0 {
i++;
}
}
fclose(MyFile);
}
printf("%d", i); /* does work to find out how many records but optimal? */
Given that you're apparently dealing with an entire file of records of fixed size, you can seek to the end of the file, get the current position, and divide by the record size. In theory, this has a portability problem (a binary file can contain an arbitrary number of NULs appended to its end) but in practice you won't run into problems on most common systems (AFAIK, that happened primarily on CP/M, which didn't explicitly store a file length, just a number of blocks, so the end of the file was always padded to fill the last block).
BTW, your loop for reading records has a problem -- in fact, almost any loop of the sort while (!feof(file))
, or anything similar is virtually guaranteed to work incorrectly (typically it'll "read" the last record twice).