| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1016 人关注过本帖
标题:随机改写某学生的分数.
只看楼主 加入收藏
封闭
Rank: 9Rank: 9Rank: 9
来 自:广东省汕头市
等 级:蜘蛛侠
威 望:1
帖 子:501
专家分:1084
注 册:2007-9-14
结帖率:80%
收藏
 问题点数:0 回复次数:7 
随机改写某学生的分数.
#include <stdio.h>
main()
{
int num,x;
long i;
float score;
FILE *fp;
if(!(fp=open("w812.dat","rb+")))
{
printf("cannot open file\n");
exit(1);
}
printf("请输入序号:");
scanf("%d",&x);
i=16*(x-1)+12;
printf("请输入新的分数:");
scanf("%f",&score);
fseek(fp,i,0);
fweite(&score,4,1,fp);
fclose(fp);
}

已知w812.dat文件中存有20个学生的数据,根据序号随机改写某学生的分数.
这个程序中红色部分是什么意思呢?
i=16*(x-1)+12
搜索更多相关主题的帖子: 分数 随机 学生 
2008-01-25 10:55
devil_v6
Rank: 1
等 级:新手上路
帖 子:86
专家分:0
注 册:2007-10-29
收藏
得分:0 
int fseek(FILE *fp, LONG offset, int origin)
这个函数中,那个offset 是相对于origin规定的偏移位置量,所以这里这个i也是个偏移量,
i=16*(x-1)+12,x也就是你输入的想修改的位置,而c存储是从0开始,所以减1然后算位置,剩下的怎么算就不知道了,估计是看在内存中占位置大小
PS:胡乱说的,请大家多多指正

2008-01-25 11:04
封闭
Rank: 9Rank: 9Rank: 9
来 自:广东省汕头市
等 级:蜘蛛侠
威 望:1
帖 子:501
专家分:1084
注 册:2007-9-14
收藏
得分:0 
谢谢楼上的回答..
还有没有别的解答呢??
2008-01-25 13:01
xianshizhe111
Rank: 1
等 级:新手上路
帖 子:1451
专家分:0
注 册:2007-12-8
收藏
得分:0 
就是一个文件定位点(和上面的差不多)
在文件中查查文件个数再比较一下.
2008-01-25 13:21
封闭
Rank: 9Rank: 9Rank: 9
来 自:广东省汕头市
等 级:蜘蛛侠
威 望:1
帖 子:501
专家分:1084
注 册:2007-9-14
收藏
得分:0 
那这个公式就是和内存中的存储有关系咯?
2008-01-25 17:46
xianshizhe111
Rank: 1
等 级:新手上路
帖 子:1451
专家分:0
注 册:2007-12-8
收藏
得分:0 
i(就是每个学生之间的数据距离)
2008-01-25 17:59
forever74
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:CC
等 级:版主
威 望:58
帖 子:1692
专家分:4282
注 册:2007-12-27
收藏
得分:0 
这个表达式表示了你要改的成绩在文件中的位置。根据这个表达式,可以猜想:
每个学生的信息占16个字节,所以x-1个学生占16*(x-1)个字节;
每人的16字节中,前12个用来存放姓名学号什么的了,最后4字节存放成绩。
2008-01-25 18:21
封闭
Rank: 9Rank: 9Rank: 9
来 自:广东省汕头市
等 级:蜘蛛侠
威 望:1
帖 子:501
专家分:1084
注 册:2007-9-14
收藏
得分:0 
谢谢回答.
2008-01-25 21:44
快速回复:随机改写某学生的分数.
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.015837 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved