题目
解决代码及点评
/*
3. 将10名职工的数据从键盘输入, 然后送入磁盘文件worker1. rec 中保存。
设职工数据包括:职工号、职工名、性别、年龄、工资,再从磁盘调入这些数据,
依次打印出来(用 fread和fwrite函数)。
*/
#include <stdio.h>
#include <stdlib.h>
typedef struct Staff_9_3
{
int num;
char name[30];
char sex[5];
int age;
float salary;
} Employee;
/*
保存员工信息
*/
void saveInfo93(Employee * emp,int n)
{
FILE *fp = NULL;
fopen_s(&fp, "worker1.rec","wb");
if (fp)
{
for (int i = 0; i < n; i++)
{
fwrite(&emp[i],sizeof(emp[i]),1,fp);
}
fclose(fp);
}
else
{
printf("open file failed!");
}
}
/*
读取员工信息
*/
void readInfo93()
{
FILE *fp = NULL;
Employee tempEmp;
fopen_s(&fp, "worker1.rec","rb");
if (fp)
{
fread(&tempEmp,sizeof(tempEmp),1,fp);
while(!feof(fp))
{
printf("num = %d,name = %s,sex = %s,age = %d,salary = %f\n",
tempEmp.num,tempEmp.name,tempEmp.sex,tempEmp.age,tempEmp.salary);
fread(&tempEmp,sizeof(tempEmp),1,fp);
}
fclose(fp);
}
else
{
printf("open file failed!");
}
}
void main()
{
const int N = 10;
Employee emp[N];
for (int i = 0; i < N; i++)
{
printf("请输入第%d员工的姓名:\n",(i + 1));
scanf_s("%s",&(emp[i].name));
printf("请输入第%d员工的性别:\n",(i + 1));
scanf_s("%s",&(emp[i].sex));
printf("请输入第%d员工的编号:\n",(i + 1));
scanf_s("%d",&(emp[i].num));
printf("请输入第%d员工的年龄:\n",(i + 1));
scanf_s("%d",&(emp[i].age));
printf("请输入第%d员工的工资:\n",(i + 1));
scanf_s("%f",&(emp[i].salary));
}
saveInfo93(emp,N);
readInfo93();
system("pause");
}
代码编译以及运行
由于资源上传太多,资源频道经常被锁定无法上传资源,同学们可以打开VS2013自己创建工程,步骤如下:
1)新建工程
2)选择工程
3)创建完工程如下图:
4)增加文件,右键点击项目
5)在弹出菜单里做以下选择
6)添加文件
7)拷贝代码与运行
程序运行结果
代码下载
http://download.csdn.net/detail/yincheng01/6694119解压密码:c.itcast.cn