#include "os.h" #include "structs.h" void do_it (FILE * src, FILE * trg, FILE * out); int main (int argc, char **argv) { FILE *src, *trg, *out; if (argc != 4) { fprintf (stderr, "Usage: %s source target ulit\n", argv[0]); return 0; } else if (!(src = fopen (argv[1], "rb"))) { fprintf (stderr, "%s: Could not open.\n", argv[1]); return 1; } else if (!(trg = fopen (argv[2], "rb"))) { fprintf (stderr, "%s: Could not open.\n", argv[2]); return 1; } else if (!(out = fopen (argv[3], "wb"))) { fprintf (stderr, "%s: Could not open.\n", argv[3]); return 1; } else { do_it (src, trg, out); } fclose (src); fclose (trg); fclose (out); return 0; } void do_it (FILE * src, FILE * trg, FILE * out) { struct char_file_u inbuf1, inbuf2; int a, b, c, d, n; srand ((int) time (0)); n = 1; for (;;) { fread (&inbuf1, sizeof (inbuf1), 1, trg); fread (&inbuf2, sizeof (inbuf2), 1, src); while (strcmp (inbuf1.name, inbuf2.name)) fread (&inbuf2, sizeof (inbuf2), 1, src); if (feof (trg)) break; /* do something */ inbuf1.points.gold = inbuf2.points.gold; if (inbuf1.points.gold > 25000 * inbuf1.level) inbuf1.points.gold = 25000 * inbuf1.level; /* do something else */ fwrite (&inbuf1, sizeof (inbuf1), 1, out); } }