程序编写修改,变量定义问题

#include <stdlib.h>
#define len sizeof (struct staff)
struct staff
{ char emp;
int num;
char name[50];
char sex [20];
int date[2];
char background[50] ;
char job [50];
int number;
struct staff *next;
}
void begin()
{ printf ("**************************\n");
printf(" 1.录入职工信息 \n");
printf(" 2.显示职工信息 \n");
printf(" 3.查询职工信息 \n");
printf(" 4.修改职工信息 \n");
printf(" 5.删除职工信息 \n");
printf ("**************************\n");
}
emp tou (emp *head)
{
head = (emp *)malloc(1en);
if(head == NULL)
{
printf("创建头结点失败\n");
exit(-1);
}
head->next = NULL;
return head;

}

void creat (emp *head)
{
emp *p;
p = (emp *)malloc(len);
int i,n= 0;
printf("你需要输入几个职工的信息\n");
scanf("%d", &i);
printf("'''''''''''''''''''''''''''''''\n");
while(n<i)
{ printf("输入职工号\n");
scanf("%d" ,&p -> num);
printf("输入职工的姓名\n");
scanf("%s" ,p -> name);
printf("输入职工的性别\n");
scanf("%s" ,p -> sex);
printf("输入职工的出生年月\n");
printf("年");
scanf("%d" ,&p -> date[0]);
printf("月");
scanf("%d",&p -> date[1]);
printf("输入职工的学历\n");
scanf("%s",p -> background);
printf("输入职工的职务\n");
scanf("%s",p -> job);
printf("输入职工的工资\n");
scanf("%d",&p -> salary);
printf("输入职工的住址\n");
scanf("%s" ,p -> addr);
printf("输入职工的电话\n");
scanf("%d",&p -> number);
printf("'''''''''''''''''''''''''''''''\n");
p -> next= head -> next;
head -> next = p;
p = (emp *)malloc(len);
n++;

}

}
void show (emp *head)
{
emp *p;
p = head -> next;
printf("职工号\t");
printf("姓名\t");
printf("性别\t");
printf("出生年月\t");
printf("学历\t");
printf("职务\t");
printf("工资\t");
printf("住址\t");
printf("电话\n");
while(p != NULL)
{
printf("%d\t",p -> num);
printf("%s\t",p ->name);
printf("%s\t",p -> sex) ;
printf("%d年%d月\t",p -> date[0],p -> date[1]) ;
printf("%s\t",p -> background);
printf("%s\t",p -> job);
printf("%d\t",p -> salary);
printf("%s\t",p -> addr);
printf("%d\n",p -> number) ;
p = p->next;
}
}
void polling (emp *head)
{
int i;
printf("输入你要查询的职工号\n");
scanf("%d", &i);
printf("-----------------------------\n");
emp *p;
p = head -> next;
while(p -> num != i)
{
p =p-> next;
}
printf("职工号\t");
printf("姓名\t");
printf("性别\t");
printf("出生年月\t");
printf("学历\t");
printf("职务\t");
printf("工资\t");
printf("住址\t");
printf("电话\n");
printf("%d\t" ,p -> num);
printf("%s\t",p ->name);
printf("%s\t",p -> sex);
printf("%d年%d月\t",p -> date[0],p -> date[1]);
printf("%s\t",p -> background);
printf("%s\t",p -> job);
printf("%d\t",p -> salary);
printf("%s\t" ,p -> addr);
printf(" %d\n" ,p -> number);
}
void revise (emp *head)
{
int i;
printf("输入你要修改的职工号\n");
scanf("%d" , &i);
printf("-----------\n");
emp *p, *q, *w;
w = head -> next;
q = head;
while(w -> num != i)
{ q=w;
w=w-> next;
}
p = (emp *) malloc (len);
printf("输入职工号\n");
scanf("%d",&p -> num) ;
printf("输入职工的姓名\n");
scanf("%s",p -> name) ;
printf("输入职工的性别\n");
scanf("%s" ,p -> sex) ;
printf("输入职工的出生年月\n");
printf("年") ;
scanf("%d",&p -> date[0]);
printf("月") ;
scanf("%d",&p -> date[1]) ;
printf("输入职工的学历\n");
scanf("%s",p -> background);
printf("输入职工的职务\n");
scanf("%s",p -> job);
printf("输入职工的工资\n");
scanf("%d", &p -> salary);
printf("输入职工的住址\n ");
scanf("%s",p -> addr);
printf("输入职工的电话\n");
scanf("%d",&p -> number);
printf("'''''''''''''''''''''''''''''\n");
q->next=p;
p->next =w->next;
free (w);
}
void del(emp *head)
{int i;
printf("输入你要删除的职工号\n");
scanf("%d" ,&i) ;
printf("-------------------\n");
emp *p, *q;
p = head -> next;
q = head;
while(p -> num != i)
{ q=p;
p =p-> next;
}
q->next=p->next;
free(p);
}
void write(emp *head)
{
FILE *fg;
emp *p;
if((fg = fopen("1.txt","w")) == NULL)
{ printf("创建文件失败\n");
exit(-1);
}
p=head;
while(p!= NULL)
{
fwrite(p,len,1,fg);
p=p->next;
}
fclose(fg);
}
emp *read(emp *head)
{
emp *p,*q;
FILE *fg;
if((fg = fopen("1.txt","r"))== NULL)
{ return head;
printf("创建文件失败\n");
}
int i= 1;
p = (emp *)malloc(len);
while(fread(p,len,1,fg))
{ if(i== 1)
head= p;
else
q->next= P;
q=p;
i++;
p = (emp *)malloc(len);
}
fclose(fg);
return head;
}

问题:D:\实验1\程序设计\职工管理系统\main.c|15|error: expected ';', identifier or '(' before 'void'|
||=== 生成: Debug in 职工管理系统 (compiler: GNU GCC Compiler) ===|
D:\实验1\程序设计\职工管理系统\main.c|15|error: expected ';', identifier or '(' before 'void'|
D:\实验1\程序设计\职工管理系统\main.c|24|error: unknown type name 'emp'|
D:\实验1\程序设计\职工管理系统\main.c|24|error: unknown type name 'emp'|
D:\实验1\程序设计\职工管理系统\main.c|26|error: exponent has no digits|
D:\实验1\程序设计\职工管理系统\main.c|37|error: unknown type name 'emp'|
D:\实验1\程序设计\职工管理系统\main.c|76|error: unknown type name 'emp'|
D:\实验1\程序设计\职工管理系统\main.c|103|error: unknown type name 'emp'|
D:\实验1\程序设计\职工管理系统\main.c|134|error: unknown type name 'emp'|
D:\实验1\程序设计\职工管理系统\main.c|174|error: unknown type name 'emp'|
D:\实验1\程序设计\职工管理系统\main.c|189|error: unknown type name 'emp'|
D:\实验1\程序设计\职工管理系统\main.c|205|error: unknown type name 'emp'|
D:\实验1\程序设计\职工管理系统\main.c|205|error: unknown type name 'emp'|
||=== Build 失败了: 12 error(s), 0 warning(s) (0 minute(s), 0 second(s)) ===|
怎么解决这样的问题********

运行结果及报错内容
我的解答思路和尝试过的方法
我想要达到的结果

偶遇到类似问题都是用
“每次用/.../注释掉不同部分再重新编译,直到定位到具体语法出错的位置。”
的方法解决的。

结构体最后少个分号,emp是个结构体成员变量名而不是类型,不能当作返回值。