void save(sy *h) { FILE* fp; fp=fopen("text.txt","wb");/*以只写方式打开二进制文件*/ if(fp==NULL) /*打开文件失败*/ { printf("\n文件打开失败!\n"); exit(1); } sy *p; p=h->next; //开始写入文件 fprintf(fp,"员工编号\t\t姓 名\t入职年月\t\t岗位工资\t\t奖金\t扣款\t实发工资\n"); while(p!=NULL) { if(p->FLAG==1) p=p->next; fprintf(fp,"%d\t\t%s\t%s\t",p->num,p->name,p->time); fprintf(fp,"%.2f\t\t%.2f\t%.2f\t%.2f\n",p->salary,p->bonus,p->withhold,p->net_payroll); p=p->next; } fclose(fp); //关闭此文件 }
时间: 2024-04-27 11:23:11 浏览: 59
这段代码定义了一个名为save的函数,它接收一个指向结构体sy的指针h作为参数。这个函数的作用是将链表中的数据输出到名为text.txt的二进制文件中。
首先,这个函数使用fopen函数以只写方式打开名为text.txt的二进制文件,并将返回值赋给指针变量fp。如果打开文件失败,程序将输出一个错误信息并调用exit函数退出程序。
接下来,函数使用指向结构体sy的指针变量p来遍历链表中的所有元素,并使用fprintf函数将每个元素的数据输出到打开的文件中。在输出之前,函数先输出一个表头,包含员工编号、姓名、入职年月、岗位工资、奖金、扣款和实发工资这7个字段的名称。然后,函数遍历链表中的每个元素,如果元素的FLAG属性为1,则跳过该元素。否则,函数使用fprintf函数将元素的员工编号、姓名、入职年月、岗位工资、奖金、扣款和实发工资这7个字段的值输出到文件中。
最后,函数使用fclose函数关闭打开的文件。
总之,这个函数的作用是将链表中的数据写入到名为text.txt的二进制文件中。
阅读全文