|
网站首页
|
业界新闻
|
小组
|
威客
|
人才
|
下载频道
|
博客
|
代码贴
|
在线编程
|
编程论坛
|
登录
注册
短消息
我发表的主题
我参与的主题
我收藏的贴子
我上传的附件
我下过的附件
编辑个人资料
我的博客
用户控制面板
搜索
道具
恢复默认风格
碧海青天
秋意盎然
棕红预览
粉色回忆
蓝雅绿
紫色淡雅
青青河草
e点小镇
橘子红了
红红夜思
水晶紫色
雪花飘飘
新年快乐
风格
短消息
论坛展区
帮助
编程论坛
→
开发语言
→
『 C语言论坛 』
→ 帮帮忙吧,这问题困扰我很久了
我的收件箱(0)
欢迎加入我们,一同切磋技术
用户名:
密 码:
共有
876
人关注过本帖
标题:
帮帮忙吧,这问题困扰我很久了
只看楼主
加入收藏
ljl123970
等 级:
论坛游民
帖 子:31
专家分:42
注 册:2012-1-30
第
11
楼
收藏
得分:3
迷糊
2012-02-21 11:25
举报帖子
使用道具
赠送鲜花
陪你看雪ly
等 级:
新手上路
帖 子:20
专家分:0
注 册:2012-2-16
第
12
楼
收藏
得分:0
回复 10楼 hnuhsg1226
好。。。只把有关的贴出来
2012-02-21 12:29
举报帖子
使用道具
赠送鲜花
陪你看雪ly
等 级:
新手上路
帖 子:20
专家分:0
注 册:2012-2-16
第
13
楼
收藏
得分:0
{
FILE *fp;
struct student dele_stu[10];
struct student temp_date;
char filename[20], dele_name[10][20];
char choose;
int i, j, k=0, m=0;
int done=0, index;
int date_sum;
long dele_num[10];
system("cls");
printf("<
1
>
<
2
>\n");
printf("<
按学号删除
>
<
按姓名删除
>\n");
printf("----------------------------------------------\n");
choose=getch();
printf("请输入操作的文件名:");
gets(filename);
if(choose=='1')// 输入要删除的学号
{
printf("请输入需要删除的学号,以0结束\n");
for(k=0; k<10; k++)
{
printf("NO.%d: ",k+1);
scanf("%ld",&dele_num[k]);
if(dele_num[k]==0)
{
index=k;
break;
}
}
}
else if(choose=='2')// 这里是输入需要删除的姓名,以字符数组储存
{
printf("请输入姓名,以0结束\n");
for(k=0; k<10; k++)
{
printf("NO.%d: ",k+1);
gets(dele_name[k]);
if(strcmp(dele_name[k], "0")==0)
{
index=k;
break;
}
}
}
else
{
printf("请正确选择!");
return 0;
}
if(choose=='1'||choose=='2')
{
if((fp=fopen(filename,"rb"))==NULL)
{
printf("无法打开文件:%s",filename);
return 0;
}
fseek(fp,-sizeof(struct student), SEEK_END); //读出数据总量,移动指针来读取flag的值
fread(&temp_date,sizeof(struct student), 1, fp);//(我用最后一个数据的变量flag来保存数据总量)
date_sum=temp_date.flag;
rewind(fp);
for(i=0; i<date_sum; i++)//读数据
{
if(fread(&stu[i], sizeof(struct student), 1, fp)==NULL)
printf("error");
}
fclose(fp);
if((fp=fopen(filename,"wb"))==NULL)
{
printf("无法打开文件:%s",filename);
return 0;
}
for(i=0; i<date_sum; i++)
{
if(choose=='1')
{
for(j=0; j<index; j++)
{
if(dele_num[j]!=stu[i].num)//不是要删除的就写进文件
{
stu[i].flag=stu[i].flag-done; //同步记录flag的值
if(fwrite(&stu[i], sizeof(struct student), 1, fp)!=1) //二进制读写
{
printf("error!");
fclose(fp);
}
}
else
{
dele_stu[m++]=stu[i];
date_sum--;//同步记录数据
done++;
}
}
}
if(choose=='2')
{
for(j=0; j<index; j++)
{
if(strcmp(stu[i].name, dele_name[j])!=0)
{
stu[i].flag=stu[i].flag-done; //同步记录flag的值
if(fwrite(&stu[i], sizeof(struct student), 1, fp)!=1) //二进制读写
{
printf("error!");
fclose(fp);
}
}
else
{
dele_stu[m++]=stu[i];
date_sum--;//同步记录数据
done++;
}
}
}
}
fclose(fp);
if(m>0)//判断已经有数据被删除
(下面应该不会出错)
{
printf("已删除信息:\n\n");
print_model1();
for(i=0; i<m; i++)
{
printf("
%-4d",dele_stu[i].num);
printf("
%-10s",dele_stu[i].name);
for(j=0; j<3; j++)
printf("%-10.2f",dele_stu[i].score[j]);
printf("%-10.2f\n",dele_stu[i].aver);
}
}
else
{
if(choose=='1')
printf("不存在的数据:NO.%ld",dele_num);
if(choose=='2')
printf("不存在的数据:name:%s",dele_name);
}
}
/////
2012-02-21 12:34
举报帖子
使用道具
赠送鲜花
13
2/2页
1
2
快速回复:
帮帮忙吧,这问题困扰我很久了
数据加载中...
关于我们
|
广告合作
|
编程中国
|
清除Cookies
|
TOP
|
手机版
编程中国
版权所有,并保留所有权利。
Powered by
Discuz
, Processed in 0.043673 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved