Code:
#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
#define READ "rb"
#define WRITE "wb"
typedef struct{
char Pname[10];
char Fanme[10];
char address[20];
long ID;
int code;
}PrlmntMbr;
PrlmntMbr prev[4]= //initializing with real names
{ //of parliament members in Israel
{"Yigal", "Alon", "st.6 50 Tel-Aviv", 2283475, 12},
{"Shula", "Aloni", "st.5 34 Herzelia", 1934624, 11},
{"Dan" , "Meridor","st.3 2 Jerusalem", 14932845,18},
{"Matan", "Vilnai", "st.2 5 Mev. Zion", 3854486, 12}
};
PrlmntMbr crnt[4]=
{
{"Dan", "Meridor","Rhv3 2 Jerusalem", 14932845,18},
{"Reshef", "Chen", "Rehov9 136 Haifa", 25341903,10},
{"Yechiel","Hazan", "Rehov1 79 Hadera", 1393472, 18},
{"Matan", "Vilnai", "Rehov2 5 Mev.Zion",3854486, 12}
};
typedef struct{
char PartyNmae[10];
int code;
}Parties;
Parties par[4]= //initializing with real parties in Israel
{
{"Avoda", 12},
{"Merez", 11},
{"Likud", 18},
{"shinui", 10},
};
FILE *OpenFile(char *name, char *mode) //open files function
{
FILE *fp;
if ((fp=fopen (name, mode))==NULL)
{
fprintf(stderr, "eror opening file %s\n", name);
exit(1);
}
return fp;
}
int main()
{
FILE *FPNewMbr, *FPprev, *FPcrnt, *FParty;
long code[100]={0};
int i=1,
j=1,
size;
char FNamePrev[]="prev.txt", FNameCrnt[]="crnt.txt", FNameNew[]="newmbr.txt", FPrt[]= "parties.txt";
FPprev=OpenFile(FNamePrev, WRITE);
fwrite (prev, sizeof(PrlmntMbr), 4, FPprev);
FPcrnt=OpenFile(FNameCrnt, WRITE);
fwrite (crnt, sizeof(PrlmntMbr), 4, FPcrnt);
FParty=OpenFile(FPrt, WRITE);
fwrite (par, sizeof(Parties), 4, FParty);
fclose (FPcrnt);
fclose (FPprev);
fclose (FParty);
FPprev=OpenFile(FNamePrev, READ);
FPcrnt=OpenFile(FNameCrnt, READ);
FPNewMbr=OpenFile(FNameNew, WRITE);
FParty=OpenFile(FPrt, READ);
size=sizeof (PrlmntMbr);
//Section A
fread (prev, size, 1, FPprev);
fread (crnt, size, 1, FPcrnt);
while (i<120 && j< 120) //searching algorithm
{
while (crnt->ID==prev->ID && !feof (FPprev) && fread (prev, size, 1, FPprev)
&& ! feof (FPcrnt) && fread (crnt, size, 1, FPcrnt))
{
i++;
j++;
}
while (crnt->ID < prev->ID && !feof (FPcrnt) && fwrite (crnt, size, 1, FPNewMbr))
{
j++;
fread (crnt, size, 1, FPcrnt);
}
while (crnt->ID > prev->ID && !feof (FPprev) && fread (prev, size, 1, FPprev))
{
i++;
}
}
while (j++<120) //writing to new file
{
if (crnt->ID == prev->ID)
fwrite(crnt, size, 1, FPNewMbr);
fread (crnt, size, 1, FPcrnt);
}
fclose (FPprev);
fclose (FPNewMbr);
rewind (FPcrnt);
//section B
while (!feof(FPcrnt) && fread (crnt, size, 1, FPcrnt)) //searching algorithm
code[crnt->code]++;
printf (" party name number of representatives \n");
printf ("==============================================");
while (!feof(FParty) && fread (par, sizeof(Parties), 1, FParty))
if (code [par->code])
printf ("%15s %10d \n",par->PartyNmae, par->code);
fclose (FParty);
return (0);
}
The thing is I do not get any output: not in out put file newmbr.txt, nor screen.