// 保存记录到文件 void saveEmployeeRecords() { FILE *fp; fp = fopen("employee.dat", "wb"); if (fp == NULL) { printf("文件打开失败\n"); return; } fwrite(&employeeCount, sizeof(int), 1, fp); fwrite(employeeList, sizeof(Employee), employeeCount, fp); fclose(fp); printf("员工绩效记录已保存到文件\n"); } 回答c语言项目保存文件后打开是乱码的问题,并给出解决方案
时间: 2024-01-14 11:05:13 浏览: 96
在文件保存时,使用了二进制模式打开文件,数据以二进制形式写入文件,而在文件打开时使用文本模式打开,导致读取时出现乱码。解决方案是在文件打开时使用二进制模式打开文件,修改代码如下:
```
void saveEmployeeRecords() {
FILE *fp;
fp = fopen("employee.dat", "wb");
if (fp == NULL) {
printf("文件打开失败\n");
return;
}
fwrite(&employeeCount, sizeof(int), 1, fp);
fwrite(employeeList, sizeof(Employee), employeeCount, fp);
fclose(fp);
printf("员工绩效记录已保存到文件\n");
}
```
在读取文件时也需要使用二进制模式打开文件,修改代码如下:
```
void loadEmployeeRecords() {
FILE *fp;
fp = fopen("employee.dat", "rb");
if (fp == NULL) {
printf("文件打开失败\n");
return;
}
fread(&employeeCount, sizeof(int), 1, fp);
employeeList = (Employee*)malloc(sizeof(Employee) * employeeCount);
fread(employeeList, sizeof(Employee), employeeCount, fp);
fclose(fp);
printf("员工绩效记录已加载\n");
}
```
阅读全文