帮我看一下这个怎么实现存盘功能,不知道第370行那个是不是用来存盘的
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>
#include<stdlib.h>
#include<string.h>
struct cloth {
char ID[20];
char Name[10];
float Num1;
float Num2;
float Mark3;
float Mark4;
float All;
float Average;
}cloths[1000];
int num = 0;
void Copy(struct cloth* arr, int i, int j)
{
strcpy(arr[i].ID, arr[j].ID);
strcpy(arr[i].Name, arr[j].Name);
arr[i].Num1 = arr[j].Num1;
arr[i].Num2 = arr[j].Num2;
arr[i].Mark3 = arr[j].Mark3;
arr[i].Mark4 = arr[j].Mark4;
arr[i].All = arr[j].All;
arr[i].Average = arr[j].Average;
}
int cloth_SearchByName(char name[])//通过名称来检索
{
int i;
for (i = 0; i < num; i++)
{
if (strcmp(cloths[i].Name, name) == 0) //通过strcmp函数来对比名称,找到返回在数组的位置
{
return i;
}
}
return -1; //未找到返回
}
int cloth_SearchByIndex(char id[])//通过编号来检索
{
int i;
for (i = 0; i < num; i++)
{
if (strcmp(cloths[i].ID, id) == 0) //通过strcmp函数来对比id,找到返回位置
{
return i;
}
}
return -1; //未找到返回
}
void cloth_DisplaySingle(int index)//输出表头
{
printf("%10s%10s%8s%8s%8s%10s\n", "编号", "名称", "颜色", "腰围", "衣长", "肩宽", "袖长", "平均值");
printf("-------------------------------------------------------------\n");
printf("%10s%10s%8.2f%8.2f%8.2f%8.2f%10.2f%10.2f\n", cloths[index].ID, cloths[index].Name,
cloths[index].Num1, cloths[index].Num2, cloths[index].Mark3, cloths[index].Mark4, cloths[index].All, cloths[index].Average);
}
void inputt()
{
while (1)
{
printf("请输入编号:");
scanf("%s", &cloths[num].ID);
getchar();
printf("请输入名称:");
scanf("%s", &cloths[num].Name);
getchar();
printf("请输入颜色:");
scanf("%f", &cloths[num].Num1);
getchar();
printf("请输入腰围:");
scanf("%f", &cloths[num].Num2);
getchar();
printf("请输入衣长:");
scanf("%f", &cloths[num].Mark3);
getchar();
printf("请输入肩宽:");
scanf("%f", &cloths[num].Mark4);//手动输入数据
getchar();
cloths[num].All = cloths[num].Num1 + cloths[num].Num2 + cloths[num].Mark3 + cloths[num].Mark4; //输完数据后自动计算总数及平均数
cloths[num].Average = (cloths[num].Num1 + cloths[num].Num2 + cloths[num].Mark3 + cloths[num].Mark4) / 4;
if (cloth_SearchByIndex(cloths[num].ID) == -1)
{
num++; //移向下一个位置
}
else
{
printf("编号重复,输入数据无效 !!!\n");
}
printf("是否继续?(y/n)");
if (getchar() == 'n')
{
break;
}
}
}
void modify()//修改成绩
{
while (1)
{
char id[20];
int index;
printf("请输入要修改的衣服的编号:");
scanf("%s", &id);
getchar();
index = cloth_SearchByIndex(id); //调用搜查id函数,根据其返回值确定位置
if (index == -1)
{
printf("衣服不存在!\n");
}
else
{
printf("你要修改的衣服信息为:\n");
cloth_DisplaySingle(index);
printf("-- 请输入新值--\n");
printf("请输入编号:");
scanf("%s", &cloths[index].ID);
getchar();
printf("请输入名称:");
scanf("%s", &cloths[index].Name);
getchar();
printf("请输入颜色:");
scanf("%f", &cloths[index].Num1);
getchar();
printf("请输入腰围:");
scanf("%f", &cloths[index].Num2);
getchar();
printf("请输入衣长:");
scanf("%f", &cloths[index].Mark3);
getchar();
printf("请输入肩宽:");
scanf("%f", &cloths[index].Mark4); //重新录入一套新的数据替代
getchar();
cloths[index].All = cloths[index].Num1 + cloths[index].Num2 + cloths[index].Mark3 + cloths[index].Mark4;
cloths[index].Average = (cloths[index].Num1 + cloths[index].Num2 + cloths[index].Mark3 + cloths[index].Mark4) / 4;
}
printf("是否继续?(y/n)");
if (getchar() == 'n')
{
break;
}
}
}
void deletee()//删除信息
{
int i;
while (1)
{
char id[20];
int index;
printf("请输入要删除的衣服的编号:");
scanf("%s", &id);
getchar();
index = cloth_SearchByIndex(id); //调用搜查id函数,根据其返回值确定位置
if (index == -1)
{
printf("衣服不存在!\n");
}
else
{
printf("你要删除的衣服信息为:\n");
cloth_DisplaySingle(index);
printf("是否真的要删除?(y/n)");
if (getchar() == 'y')
{
for (i = index; i < num - 1; i++)
{
Copy(cloths, i, i + 1);
//把后边的对象都向前移动
}
num--;
}
getchar();
}
printf("是否继续?(y/n)");
if (getchar() == 'n')
{
break;
}
}
}
void display()//打印已录入的信息
{
int a;
printf("%10s%10s%8s%8s%8s%8s%10s%10s\n", "编号", "名称", "颜色", "腰围", "衣长", "肩宽", "总数", "平均值");
printf("-------------------------------------------------------------\n");
for (a = 0; a < num; a++)
{
printf("%10s%10s%8.2f%8.2f%8.2f%8.2f%10.2f%10.2f\n", cloths[a].ID, cloths[a].Name,
cloths[a].Num1, cloths[a].Num2, cloths[a].Mark3, cloths[a].Mark4, cloths[a].All, cloths[a].Average);
}
}
void insert()//指定位置插入信息
{
int a, b, c;
printf("请输入你要插入的位置");
scanf("%d", &a);
if (a > num) {
printf("输入的位置有误,请重新输入,当前共%d条数据\n", num);
scanf("%d", &a);
}
b = num - 1;
for (; b >= a - 1; b--)
{
Copy(cloths, b + 1, b); //根据其输入的位置,将其及以后的数据向后移动一个位置
}
num++;
printf("请输入编号:");
scanf("%s", &cloths[a - 1].ID);
getchar();
printf("请输入名称:");
scanf("%s", &cloths[a - 1].Name);
getchar();
printf("请输入颜色:");
scanf("%f", &cloths[a - 1].Num1);
getchar();
printf("请输入腰围:");
scanf("%f", &cloths[a - 1].Num2);
getchar();
printf("请输入衣长:");
scanf("%f", &cloths[a - 1].Mark3);
getchar();
printf("请输入肩宽:");
scanf("%f", &cloths[a - 1].Mark4); //输入新数据
getchar();
cloths[a - 1].All = cloths[a - 1].Num1 + cloths[a - 1].Num2 + cloths[a - 1].Mark3 + cloths[a - 1].Mark4;
cloths[a - 1].Average = (cloths[a - 1].Num1 + cloths[a - 1].Num2 + cloths[a - 1].Mark3 + cloths[a - 1].Mark4) / 4;
}
void search()//查询衣服信息
{
while (1)
{
char name[20];
int index;
printf("请输入要查询的衣服的名称:");
scanf("%s", &name);
getchar();
index = cloth_SearchByName(name); //调用搜查name函数,根据其返回值确定位置
if (index == -1)
{
printf("不存在!\n");
}
else
{
printf("你要查询的衣服信息为:\n");
cloth_DisplaySingle(index);
}
printf("是否继续?(y/n)");
if (getchar() == 'n')
{
break;
}
}
}
void sort()//根据平均值排序
{
int i, j;
//struct cloths tmp;
for (i = 0; i < num; i++)
{
cloths[i].Average = (cloths[i].Num1 + cloths[i].Num2 + cloths[i].Mark3 + cloths[i].Mark4) / 4;
}
for (i = 0; i < num; i++)
{
for (j = 1; j < num - i; j++)
{
if (cloths[j - 1].Average < cloths[j].Average)
{
Copy(cloths, num, j - 1);
Copy(cloths, j - 1, j);
Copy(cloths, j, num);
}
}
}
int a;
printf("%10s%10s%8s%8s%8s%10s\n", "编号", "名称", "颜色", "腰围", "衣长", "肩宽", "总数", "平均值");
printf("-------------------------------------------------------------\n");
for (a = 0; a < num; a++)
{
printf("%10s%10s%8.2f%8.2f%8.2f%8.2f%10.2f%10.2f\n", cloths[a].ID, cloths[a].Name,
cloths[a].Num1, cloths[a].Num2, cloths[a].Mark3, cloths[a].Mark4, cloths[a].All, cloths[a].Average);
}
}
void SearchLow()//搜索低于标准的并输出
{
int a;
printf("颜色不匹配的有%10s%10s%8s\n", "编号", "名称", "颜色");
for (a = 0; a < num; a++)
{
if (cloths[a].Num1 < 50)
printf("\t\t%10s%10s%8.2f\n", cloths[a].Name, cloths[a].ID, cloths[a].Num1); //从头搜索到尾,若小于50就输出
}
printf("腰围不匹配的有%10s%10s%8s\n", "编号", "名称", "腰围");
for (a = 0; a < num; a++)
{
if (cloths[a].Num2 < 50)
printf("\t\t%10s%10s%8.2f\n", cloths[a].Name, cloths[a].ID, cloths[a].Num2);
}
printf("衣长不及格的有%10s%10s%8s\n", "编号", "名称", "衣长");
for (a = 0; a < num; a++)
{
if (cloths[a].Mark3 < 50)
printf("\t\t%10s%10s%8.2f\n", cloths[a].Name, cloths[a].ID, cloths[a].Mark3);
}
printf("肩宽不及格的有%10s%10s%8s\n", "编号", "名称", "肩宽");
for (a = 0; a < num; a++)
{
if (cloths[a].Mark4 < 50)
printf("\t\t%10s%10s%8.2f\n", cloths[a].Name, cloths[a].ID, cloths[a].Mark4);
}
system("pause");
}
void SearchHigh()//搜索最高者输出
{
int a;
int max;
printf("腰围最高为%10s%10s%8s\n", "编号", "名称", "腰围");
max = cloths[0].Num2;
for (a = 1; a < num; a++)
{
if (cloths[a].Num2 > max)
max = cloths[a].Num2;
}
for (a = 0; a < num; a++)
{
if (max == cloths[a].Num2)
printf("\t\t%10s%10s%8.2f\n", cloths[a].Name, cloths[a].ID, cloths[a].Num2);
}
printf("衣长最高为%10s%10s%8s\n", "编号", "名称", "衣长");
max = cloths[0].Mark3;
for (a = 1; a < num; a++)
{
if (cloths[a].Mark3 > max)
max = cloths[a].Mark3;
}
for (a = 0; a < num; a++)
{
if (max == cloths[a].Mark3)
printf("\t\t%10s%10s%8.2f\n", cloths[a].Name, cloths[a].ID, cloths[a].Mark3);
}
printf("肩宽最高为%10s%10s%8s\n", "编号", "名称", "肩宽");
max = cloths[0].Mark4;
for (a = 1; a < num; a++)
{
if (cloths[a].Mark4 > max)
max = cloths[a].Mark4;
}
for (a = 0; a < num; a++)
{
if (max == cloths[a].Mark4)
printf("\t\t%10s%10s%8.2f\n", cloths[a].Name, cloths[a].ID, cloths[a].Mark4);
}
system("pause");
}
void Save()
{
FILE* fp = fopen("temp.txt", "w+");
fprintf(fp, "%d\n", num);
for (int i = 0; i < num; i++)
{
fprintf(fp, "%s %s %f %f %f %f %f %f\n", cloths[i].ID, cloths[i].Name, cloths[i].Num1, cloths[i].Num2, cloths[i].Mark3, cloths[i].Mark4, cloths[i].All, cloths[i].Average);
}
fclose(fp);
}
void Load()
{
FILE* fp = fopen("temp.txt", "r");
fscanf(fp, "%d", &num);
for (int i = 0; i < num; i++)
{
fscanf(fp, "%s %s %f %f %f %f %f %f\n", cloths[i].ID, cloths[i].Name, &cloths[i].Num1, &cloths[i].Num2, &cloths[i].Mark3, &cloths[i].Mark4, &cloths[i].All, &cloths[i].Average);
}
fclose(fp);
}
/*主程序*/
int main() {
int i;
while (1) {
printf("\t\t\t\t\t-------- 衣服指标录入系统-------\n\n\n\n");
printf("\t\t\t\t\t1. 增加衣服记录\n\n");
printf("\t\t\t\t\t2. 修改衣服记录\n\n");
printf("\t\t\t\t\t3. 删除衣服记录\n\n");
printf("\t\t\t\t\t4. 插入衣服记录\n\n");
printf("\t\t\t\t\t5. 显示衣服所有记录\n\n");
printf("\t\t\t\t\t6. 查询衣服记录\n\n");
printf("\t\t\t\t\t7. 按平均值排序\n\n");
printf("\t\t\t\t\t8. 输出尺寸不匹配衣服\n\n");
printf("\t\t\t\t\t9. 输出各尺寸最高值\n\n");
printf("\t\t\t\t\t0. 退出\n\n\n");
printf("请选择(0-9):");
scanf("%d", &i);
switch (i) {
case 1:inputt(); break;
case 2:modify(); break;
case 3:deletee(); break;
case 4:insert(); break;
case 5:display(); break;
case 6:search(); break;
case 7:sort(); break;
case 8:SearchLow(); break;
case 9:SearchHigh(); break;
case 0:exit(0);
default:;
}
Save();
}
return 0;
}
370行save是用来存盘的,380行load是用来读取的,参考如下代码:
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>
#include<stdlib.h>
#include<string.h>
struct cloth {
char ID[20];
char Name[10];
float Num1;
float Num2;
float Mark3;
float Mark4;
float All;
float Average;
}cloths[1000];
int num = 0;
void Copy(struct cloth* arr, int i, int j)
{
strcpy(arr[i].ID, arr[j].ID);
strcpy(arr[i].Name, arr[j].Name);
arr[i].Num1 = arr[j].Num1;
arr[i].Num2 = arr[j].Num2;
arr[i].Mark3 = arr[j].Mark3;
arr[i].Mark4 = arr[j].Mark4;
arr[i].All = arr[j].All;
arr[i].Average = arr[j].Average;
}
int cloth_SearchByName(char name[])//通过名称来检索
{
int i;
for (i = 0; i < num; i++)
{
if (strcmp(cloths[i].Name, name) == 0) //通过strcmp函数来对比名称,找到返回在数组的位置
{
return i;
}
}
return -1; //未找到返回
}
int cloth_SearchByIndex(char id[])//通过编号来检索
{
int i;
for (i = 0; i < num; i++)
{
if (strcmp(cloths[i].ID, id) == 0) //通过strcmp函数来对比id,找到返回位置
{
return i;
}
}
return -1; //未找到返回
}
void cloth_DisplaySingle(int index)//输出表头
{
printf("%10s%10s%8s%8s%8s%10s\n", "编号", "名称", "颜色", "腰围", "衣长", "肩宽", "袖长", "平均值");
printf("-------------------------------------------------------------\n");
printf("%10s%10s%8.2f%8.2f%8.2f%8.2f%10.2f%10.2f\n", cloths[index].ID, cloths[index].Name,
cloths[index].Num1, cloths[index].Num2, cloths[index].Mark3, cloths[index].Mark4, cloths[index].All, cloths[index].Average);
}
void inputt()
{
while (1)
{
printf("请输入编号:");
scanf("%s", &cloths[num].ID);
getchar();
printf("请输入名称:");
scanf("%s", &cloths[num].Name);
getchar();
printf("请输入颜色:");
scanf("%f", &cloths[num].Num1);
getchar();
printf("请输入腰围:");
scanf("%f", &cloths[num].Num2);
getchar();
printf("请输入衣长:");
scanf("%f", &cloths[num].Mark3);
getchar();
printf("请输入肩宽:");
scanf("%f", &cloths[num].Mark4);//手动输入数据
getchar();
cloths[num].All = cloths[num].Num1 + cloths[num].Num2 + cloths[num].Mark3 + cloths[num].Mark4; //输完数据后自动计算总数及平均数
cloths[num].Average = (cloths[num].Num1 + cloths[num].Num2 + cloths[num].Mark3 + cloths[num].Mark4) / 4;
if (cloth_SearchByIndex(cloths[num].ID) == -1)
{
num++; //移向下一个位置
}
else
{
printf("编号重复,输入数据无效 !!!\n");
}
printf("是否继续?(y/n)");
if (getchar() == 'n')
{
break;
}
}
}
void modify()//修改成绩
{
while (1)
{
char id[20];
int index;
printf("请输入要修改的衣服的编号:");
scanf("%s", &id);
getchar();
index = cloth_SearchByIndex(id); //调用搜查id函数,根据其返回值确定位置
if (index == -1)
{
printf("衣服不存在!\n");
}
else
{
printf("你要修改的衣服信息为:\n");
cloth_DisplaySingle(index);
printf("-- 请输入新值--\n");
printf("请输入编号:");
scanf("%s", &cloths[index].ID);
getchar();
printf("请输入名称:");
scanf("%s", &cloths[index].Name);
getchar();
printf("请输入颜色:");
scanf("%f", &cloths[index].Num1);
getchar();
printf("请输入腰围:");
scanf("%f", &cloths[index].Num2);
getchar();
printf("请输入衣长:");
scanf("%f", &cloths[index].Mark3);
getchar();
printf("请输入肩宽:");
scanf("%f", &cloths[index].Mark4); //重新录入一套新的数据替代
getchar();
cloths[index].All = cloths[index].Num1 + cloths[index].Num2 + cloths[index].Mark3 + cloths[index].Mark4;
cloths[index].Average = (cloths[index].Num1 + cloths[index].Num2 + cloths[index].Mark3 + cloths[index].Mark4) / 4;
}
printf("是否继续?(y/n)");
if (getchar() == 'n')
{
break;
}
}
}
void deletee()//删除信息
{
int i;
while (1)
{
char id[20];
int index;
printf("请输入要删除的衣服的编号:");
scanf("%s", &id);
getchar();
index = cloth_SearchByIndex(id); //调用搜查id函数,根据其返回值确定位置
if (index == -1)
{
printf("衣服不存在!\n");
}
else
{
printf("你要删除的衣服信息为:\n");
cloth_DisplaySingle(index);
printf("是否真的要删除?(y/n)");
if (getchar() == 'y')
{
for (i = index; i < num - 1; i++)
{
Copy(cloths, i, i + 1);
//把后边的对象都向前移动
}
num--;
}
getchar();
}
printf("是否继续?(y/n)");
if (getchar() == 'n')
{
break;
}
}
}
void display()//打印已录入的信息
{
int a;
printf("%10s%10s%8s%8s%8s%8s%10s%10s\n", "编号", "名称", "颜色", "腰围", "衣长", "肩宽", "总数", "平均值");
printf("-------------------------------------------------------------\n");
for (a = 0; a < num; a++)
{
printf("%10s%10s%8.2f%8.2f%8.2f%8.2f%10.2f%10.2f\n", cloths[a].ID, cloths[a].Name,
cloths[a].Num1, cloths[a].Num2, cloths[a].Mark3, cloths[a].Mark4, cloths[a].All, cloths[a].Average);
}
}
void insert()//指定位置插入信息
{
int a, b, c;
printf("请输入你要插入的位置");
scanf("%d", &a);
if (a > num) {
printf("输入的位置有误,请重新输入,当前共%d条数据\n", num);
scanf("%d", &a);
}
b = num - 1;
for (; b >= a - 1; b--)
{
Copy(cloths, b + 1, b); //根据其输入的位置,将其及以后的数据向后移动一个位置
}
num++;
printf("请输入编号:");
scanf("%s", &cloths[a - 1].ID);
getchar();
printf("请输入名称:");
scanf("%s", &cloths[a - 1].Name);
getchar();
printf("请输入颜色:");
scanf("%f", &cloths[a - 1].Num1);
getchar();
printf("请输入腰围:");
scanf("%f", &cloths[a - 1].Num2);
getchar();
printf("请输入衣长:");
scanf("%f", &cloths[a - 1].Mark3);
getchar();
printf("请输入肩宽:");
scanf("%f", &cloths[a - 1].Mark4); //输入新数据
getchar();
cloths[a - 1].All = cloths[a - 1].Num1 + cloths[a - 1].Num2 + cloths[a - 1].Mark3 + cloths[a - 1].Mark4;
cloths[a - 1].Average = (cloths[a - 1].Num1 + cloths[a - 1].Num2 + cloths[a - 1].Mark3 + cloths[a - 1].Mark4) / 4;
}
void search()//查询衣服信息
{
while (1)
{
char name[20];
int index;
printf("请输入要查询的衣服的名称:");
scanf("%s", &name);
getchar();
index = cloth_SearchByName(name); //调用搜查name函数,根据其返回值确定位置
if (index == -1)
{
printf("不存在!\n");
}
else
{
printf("你要查询的衣服信息为:\n");
cloth_DisplaySingle(index);
}
printf("是否继续?(y/n)");
if (getchar() == 'n')
{
break;
}
}
}
void sort()//根据平均值排序
{
int i, j;
//struct cloths tmp;
for (i = 0; i < num; i++)
{
cloths[i].Average = (cloths[i].Num1 + cloths[i].Num2 + cloths[i].Mark3 + cloths[i].Mark4) / 4;
}
for (i = 0; i < num; i++)
{
for (j = 1; j < num - i; j++)
{
if (cloths[j - 1].Average < cloths[j].Average)
{
Copy(cloths, num, j - 1);
Copy(cloths, j - 1, j);
Copy(cloths, j, num);
}
}
}
int a;
printf("%10s%10s%8s%8s%8s%10s\n", "编号", "名称", "颜色", "腰围", "衣长", "肩宽", "总数", "平均值");
printf("-------------------------------------------------------------\n");
for (a = 0; a < num; a++)
{
printf("%10s%10s%8.2f%8.2f%8.2f%8.2f%10.2f%10.2f\n", cloths[a].ID, cloths[a].Name,
cloths[a].Num1, cloths[a].Num2, cloths[a].Mark3, cloths[a].Mark4, cloths[a].All, cloths[a].Average);
}
}
void SearchLow()//搜索低于标准的并输出
{
int a;
printf("颜色不匹配的有%10s%10s%8s\n", "编号", "名称", "颜色");
for (a = 0; a < num; a++)
{
if (cloths[a].Num1 < 50)
printf("\t\t%10s%10s%8.2f\n", cloths[a].Name, cloths[a].ID, cloths[a].Num1); //从头搜索到尾,若小于50就输出
}
printf("腰围不匹配的有%10s%10s%8s\n", "编号", "名称", "腰围");
for (a = 0; a < num; a++)
{
if (cloths[a].Num2 < 50)
printf("\t\t%10s%10s%8.2f\n", cloths[a].Name, cloths[a].ID, cloths[a].Num2);
}
printf("衣长不及格的有%10s%10s%8s\n", "编号", "名称", "衣长");
for (a = 0; a < num; a++)
{
if (cloths[a].Mark3 < 50)
printf("\t\t%10s%10s%8.2f\n", cloths[a].Name, cloths[a].ID, cloths[a].Mark3);
}
printf("肩宽不及格的有%10s%10s%8s\n", "编号", "名称", "肩宽");
for (a = 0; a < num; a++)
{
if (cloths[a].Mark4 < 50)
printf("\t\t%10s%10s%8.2f\n", cloths[a].Name, cloths[a].ID, cloths[a].Mark4);
}
system("pause");
}
void SearchHigh()//搜索最高者输出
{
int a;
int max;
printf("腰围最高为%10s%10s%8s\n", "编号", "名称", "腰围");
max = cloths[0].Num2;
for (a = 1; a < num; a++)
{
if (cloths[a].Num2 > max)
max = cloths[a].Num2;
}
for (a = 0; a < num; a++)
{
if (max == cloths[a].Num2)
printf("\t\t%10s%10s%8.2f\n", cloths[a].Name, cloths[a].ID, cloths[a].Num2);
}
printf("衣长最高为%10s%10s%8s\n", "编号", "名称", "衣长");
max = cloths[0].Mark3;
for (a = 1; a < num; a++)
{
if (cloths[a].Mark3 > max)
max = cloths[a].Mark3;
}
for (a = 0; a < num; a++)
{
if (max == cloths[a].Mark3)
printf("\t\t%10s%10s%8.2f\n", cloths[a].Name, cloths[a].ID, cloths[a].Mark3);
}
printf("肩宽最高为%10s%10s%8s\n", "编号", "名称", "肩宽");
max = cloths[0].Mark4;
for (a = 1; a < num; a++)
{
if (cloths[a].Mark4 > max)
max = cloths[a].Mark4;
}
for (a = 0; a < num; a++)
{
if (max == cloths[a].Mark4)
printf("\t\t%10s%10s%8.2f\n", cloths[a].Name, cloths[a].ID, cloths[a].Mark4);
}
system("pause");
}
void Save()
{
FILE* fp = fopen("temp.txt", "w+");
fprintf(fp, "%d\n", num);
for (int i = 0; i < num; i++)
{
fprintf(fp, "%s %s %f %f %f %f %f %f\n", cloths[i].ID, cloths[i].Name, cloths[i].Num1, cloths[i].Num2, cloths[i].Mark3, cloths[i].Mark4, cloths[i].All, cloths[i].Average);
}
fclose(fp);
}
void Load()
{
FILE* fp = fopen("temp.txt", "r");
if (!fp)
return;
fscanf(fp, "%d", &num);
for (int i = 0; i < num; i++)
{
fscanf(fp, "%s %s %f %f %f %f %f %f\n", cloths[i].ID, cloths[i].Name, &cloths[i].Num1, &cloths[i].Num2, &cloths[i].Mark3, &cloths[i].Mark4, &cloths[i].All, &cloths[i].Average);
}
fclose(fp);
}
/*主程序*/
int main() {
int i;
Load();
while (1) {
printf("\t\t\t\t\t-------- 衣服指标录入系统-------\n\n\n\n");
printf("\t\t\t\t\t1. 增加衣服记录\n\n");
printf("\t\t\t\t\t2. 修改衣服记录\n\n");
printf("\t\t\t\t\t3. 删除衣服记录\n\n");
printf("\t\t\t\t\t4. 插入衣服记录\n\n");
printf("\t\t\t\t\t5. 显示衣服所有记录\n\n");
printf("\t\t\t\t\t6. 查询衣服记录\n\n");
printf("\t\t\t\t\t7. 按平均值排序\n\n");
printf("\t\t\t\t\t8. 输出尺寸不匹配衣服\n\n");
printf("\t\t\t\t\t9. 输出各尺寸最高值\n\n");
printf("\t\t\t\t\t0. 退出\n\n\n");
printf("请选择(0-9):");
scanf("%d", &i);
switch (i) {
case 1:inputt(); break;
case 2:modify(); break;
case 3:deletee(); break;
case 4:insert(); break;
case 5:display(); break;
case 6:search(); break;
case 7:sort(); break;
case 8:SearchLow(); break;
case 9:SearchHigh(); break;
case 0:exit(0);
default:;
}
Save();
}
return 0;
}
save,load这两个函数你已经实现了,生成的文件就是在代码文件同目录的temp.txt文件,,你首先要在我图中的目录建一个temp.txt文件,再编译运行代码。
是的 370行save是用来存硬盘
例如,下图有一个汇编文件,需要NASM编译器:
右击对应汇编文件,安装下图配置自定义的编译设置即可。
注意:为了保证编译通过,还需要把NASM加入到系统环境变量path里才可以。
由于参考资料并没有涉及C语言程序存盘的相关内容,我需要知道您的存盘方式,例如是文本文件还是二进制文件。一般来说,存盘的方法有以下几个步骤:
FILE *fp;
fp = fopen("myfile.txt", "w"); // 打开文件,w表示写入模式,如果文件不存在则创建新文件
if (fp == NULL) {
printf("打开文件失败");
return 1;
}
int a = 123;
char b[] = "hello world";
fprintf(fp, "%d %s", a, b); // 将整数和字符串写入文件中
fclose(fp); // 关闭文件
如果您的存盘方式是二进制文件,可以使用fwrite函数和fread函数来完成文件的读写操作。具体用法可以参考以下代码:
// 写入数据
int a = 123;
char b[] = "hello world";
fwrite(&a, sizeof(int), 1, fp); // 将整数写入文件中
fwrite(b, sizeof(char), strlen(b), fp); // 将字符串写入文件中
// 读取数据
int a;
char b[20];
fread(&a, sizeof(int), 1, fp); // 从文件中读取整数
fread(b, sizeof(char), strlen(b), fp); // 从文件中读取字符串
请注意,您需要确保读取和写入的数据类型和长度都是正确的,否则可能会导致程序崩溃或数据错误。另外,您需要在读取文件之前检查文件是否存在,如果文件不存在可能会导致程序崩溃。