该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
这个程序的数据,
myfile.dat 里面的格式
#include
#include
#include
#define SIZE 4
struct student
{char num[20];
char name[10];
int time;
}std[SIZE];
void save()
{int i;
FILE *fp;
if((fp=fopen("myfile.dat","rb+"))==NULL)
{printf("文件打开失败\n");
exit(0);}
for(i=0;i
if(fwrite(&std[i],sizeof(struct student),1,fp)!=1)
/*将内存中的数据输出到磁盘文件中*/
printf("文件保存失败\n");
}
void main()
{
int j,i;
char c;
FILE *fp;
if((fp=fopen("myfile.dat","ab+"))==NULL)
{
printf("文件打开失败\n");
exit(0);
}
for(i=0;i
fread(&std[i],sizeof(struct student),1,fp);
/*将fp所指向的文件中的数据存储到数组std中*/
printf("*************欢迎使用上课随机点名程序**************\n");
printf("******输入a:显示所有同学名情况 *********\n");
printf("******输入d: 开始点名 *********\n");
printf("******输入s:保存点名 *********\n");
printf("******输入b: 点名次数归零 *********\n");
printf("******输入q: 退出 *********\n");
printf("******************************************\n");
while(1)
{
c=getchar();
switch(c)
{
case 'a':for(i=0;i
printf("\t\t%s\t\t%s\t\t被点名%d次\n",std[i].num,std[i].name,std[i].time);
break;
case 's': save();
printf("****文件保存成功!退出请输入q****\n");
break;
case 'b': for(i=0;i
std[i].time=0;
printf("点名次数归%d\n",std[i].time);break;
case 'q': exit(0);
case 'd':
loop:j=rand()/1000; /*调用rand的函数进行点名*/
if(j==0)
{
std[0].time++;
printf("\t\t%s\t\t%s\n",std[j].num,std[j].name);
}
else if(j==1)
{
std[1].time++;
printf("\t\t%s\t\t%s\n",std[j].num,std[j].name);
}
else if(j==2)
{
std[2].time++;
printf("\t\t%s\t\t%s\n",std[j].num,std[j].name);
}
else if(j==3)
{
std[3].time++;
printf("\t\t%s\t\t%s\n",std[j].num,std[j].name);
}
else goto loop;
break;}
}
fclose(fp);
}