Prog#213 A: write into 2 files 1 file contains only account no & other contains all info

/*
write into 2 files 1 file contains only account no & other contains all info.
Program#213 A
*/
#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 *fp;
int i;
if(argc!=2)
{
printf("error. no.of arg");
return 0;
}
fp=fopen (argv[i], "w");
if(fp==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);
for(i=0;i<sizeof(struct bio);i++)
putc(m.b[i], fp);
scanf("%d", &m.a.acno);
}
fclose(fp);
}