#include <stdio.h> #include <string.h> char x[4096], z[4096], b[21], m[4096 * 4]; int main (void) { FILE *f = tmpfile (); int i, failed = 0; memset (x, 'x', 4096); memset (z, 'z', 4096); b[20] = 0; for (i = 0; i <= 5; i++) { fwrite (x, 4096, 1, f); fwrite (z, 4096, 1, f); } rewind (f); fread (m, 4096 * 4 - 10, 1, f); fread (b, 20, 1, f); printf ("got %s (should be %s)\n", b, "zzzzzzzzzzxxxxxxxxxx"); if (strcmp (b, "zzzzzzzzzzxxxxxxxxxx")) failed = 1; fseek (f, -40, SEEK_CUR); fread (b, 20, 1, f); printf ("got %s (should be %s)\n", b, "zzzzzzzzzzzzzzzzzzzz"); if (strcmp (b, "zzzzzzzzzzzzzzzzzzzz")) failed = 1; fread (b, 20, 1, f); printf ("got %s (should be %s)\n", b, "zzzzzzzzzzxxxxxxxxxx"); if (strcmp (b, "zzzzzzzzzzxxxxxxxxxx")) failed = 1; fread (b, 20, 1, f); printf ("got %s (should be %s)\n", b, "xxxxxxxxxxxxxxxxxxxx"); if (strcmp (b, "xxxxxxxxxxxxxxxxxxxx")) failed = 1; return failed; }