#include typedef struct bini_stream bstream; struct data { int life, max, min, zero; }; void write(struct data d) { FILE *fp; bstream *bs = bini_new(); bini_wi(bs, d.life); bini_wi(bs, d.max); bini_wi(bs, d.min); bini_wi(bs, d.zero); fp = fopen("fileio.bin", "wb"); if (!fp) { fprintf(stderr, "failed to open fileio.bin\n"); exit(1); } bini_fwrite(bs, 1, bs->len, fp); fclose(fp); bini_close(bs); } void read(struct data *d) { FILE *fp; bstream *bs = bini_new(); fp = fopen("fileio.bin", "rb"); if (!fp) { fprintf(stderr, "failed to open fileio.bin\n"); exit(1); } bini_fread(bs, 1, sizeof(*d), fp); fclose(fp); bini_dump(stderr, bs); d->life = bini_ri(bs); d->max = bini_ri(bs); d->min = bini_ri(bs); d->zero = bini_ri(bs); printf("life=%d\n", d->life); printf("max i32=%d\n", d->max); printf("min i32=%d\n", d->min); printf("zero=%d\n", d->zero); bini_close(bs); } int main(void) { struct data d = { 42, INT32_MAX, INT32_MIN, 0 }; write(d); read(&d); }