#include #include void fatal(char *msg) { fputs(msg, stderr); exit(1); } void main() { FILE *osobe, *gradovi, *osobe_prn; struct gradovi_t { unsigned p_broj; char naziv[40+1]; } grad; int sifra, br_str=0, r_br=0; unsigned p_broj; char adresa[30+1], pr_ime[20+1]; if ((osobe=fopen("osobe", "rt"))==NULL) fatal("Input error!\n"); if ((gradovi=fopen("gradovi", "rb"))==NULL) fatal("Input error!\n"); if ((osobe_prn=fopen("osobe.prn", "wt"))==NULL) fatal("Output error!\n"); while (fscanf(osobe, "%4d%20[^\n]%5u%30[^\n]", &sifra, pr_ime, &p_broj, adresa)==4) { if (fseek(gradovi, (long)((p_broj-41000u)*sizeof(grad)), SEEK_SET)!=0) fatal("I/O error!\n"); if (fread(&grad, sizeof(grad), 1 , gradovi)>0) { if (!(r_br%60)) { fprintf(osobe_prn, "Nepostojeci postanski brojevi\n\n"); fprintf(osobe_prn, "Stranica: %3d.\n\n", ++br_str); fprintf(osobe_prn, "Redni broj Sifra osobe Postanski broj\n"); fprintf(osobe_prn, "---------------------------------------\n"); } fprintf(osobe_prn, "%5d %4u %5u\n", ++r_br, sifra, p_broj); } } if (fcloseall()!=3) fatal("I/O error!\n"); }