Prog#213 C: read info from k/b & write a/c in separate file & all info in other file

/*
read info from k/b & write a/c in separate file & all info in other file 
Program#213 C
*/
#include<stdio.h>
main(int argc,char *argv[])
{
union xyz{
struct bio{
char name [20], addr [20];
int age, acno;
float salary;
}a;
char b[sizeof(struct bio)];
};
union xyz m;
FILE*fp1*fp2;
int i;
if(argc!=3)
{
printf("error. no.of arg");
return 0;
}
fp1=fopen (argv[i], "w");
if(fp1==NULL)
{
printf("error: file open");
return 0;
}
fp2=fopen (argv[2], "w");
if(fp2==NULL)
{
printf("file open error");
return 0;
}
scanf("%d", & m.a.acno);
while(m.a.acno!=0)
{
scanf("%s %d %f %s", m.a.name, & m.a.age, & m.a.salary, m.a.addr);
fprintf(fp1, "%d", m.a.acno);
for(i=0;i<sizeof(struct bio);i++)
putc(m.b[i], fp2);
scanf("%d", &m.a.acno);
}
fclose(fp1);
fclose(fp2);
}