📄 sav_load.c
字号:
#include "student.h"
int saveRecords()
{
FILE *fp;
char fname[30];
if(numStus==0)
{
printf("没有记录可存!");
return -1;
}
printf("请输入要存入的文件名(直接回车选择文件stu_info):");
gets(fname);
if(strlen(fname)==0)
strcpy(fname,"stu_info");
if((fp=fopen(fname,"wb"))==NULL)
{
printf("不能存入文件!\n");
return -1;
}
printf("\n存文件...\n");
fwrite(records,sizeof(StuInfo)*numStus,1,fp);
fclose(fp);
printf("%d条记录已经存入文件,请继续操作。\n",numStus);
savedTag=0;
return 0;
}
int loadRecords(void)
{
FILE *fp;
char fname[30];
char str[5];
if(numStus!=0&&savedTag==0)
{
printf("请选择您是要覆盖现有记录(Y),还是要将");
printf("读取的记录添加到现有记录之后(N)?\n");
printf("直接回车则覆盖现有记录\n");
gets(str);
if(str[0]=='n'||str[0]=='N')
{
savedTag=1;
}
else
{
if(savedTag==1)
{
printf("读取文件将会更改原来的记录,");
printf("是否保存原来的记录?(Y/N)");
gets(str);
if(str[0]!='n'&&str[0]!='N')
saveRecords();
}
numStus=0;
}
}
printf("请输入要读取的文件名(直接回车选择文件stu_info):");
gets(fname);
if(strlen(fname)==0)
strcpy(fname,"stu_info");
if((fp=fopen(fname,"rb"))==NULL)
{
printf("打不开文件!请重新选择\n");
return -1;
}
printf("\n取文件...\n");
while(!feof(fp))
{
if(numStus>=arraySize)
{
records=realloc(records,(arraySize+INCR_SIZE)*sizeof(StuInfo));
if(records==NULL)
{
printf("memory failed!");
exit(-1);
}
arraySize=arraySize+INCR_SIZE;
}
if(fread(&records[numStus],sizeof(StuInfo),1,fp)!=1)
break;
records[numStus].index=getIndex(records[numStus].sum);
numStus++;
}
fclose(fp);
printf("现在共有%d条记录。",numStus);
return 0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -