C - Advanced File Handling
Use fread
/fwrite
for binary I/O and fseek
/ftell
for positioning.
Binary I/O
#include <stdio.h>
int main(void) {
int data[3] = {1,2,3};
FILE *fp = fopen("data.bin", "wb");
fwrite(data, sizeof *data, 3, fp);
fclose(fp);
int out[3] = {0};
fp = fopen("data.bin", "rb");
fread(out, sizeof *out, 3, fp);
fclose(fp);
printf("%d %d %d\n", out[0], out[1], out[2]);
}
Positioning
fseek(fp, 0, SEEK_END);
long size = ftell(fp);
rewind(fp);
Common Pitfalls
- Binary files are not portable across architectures (endianness/size).
- Not checking
fread/fwrite
return counts.