| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1300 人关注过本帖
标题:各位,你们看看为什么fwrite函数只能输出一组数据,程序能运行
只看楼主 加入收藏
wangjialong
Rank: 2
等 级:论坛游民
帖 子:77
专家分:95
注 册:2012-11-8
收藏
得分:0 
回复 18楼 zll310
你确定跟我说的改的一样后试的??
   如果是的话你输入后找到那个文件看一下里面的数据,应该不会错。不过就是几组乱码。

新手发言,请多指教。
2013-01-11 23:29
wangjialong
Rank: 2
等 级:论坛游民
帖 子:77
专家分:95
注 册:2012-11-8
收藏
得分:0 
以下是引用TonyDeng在2013-1-11 23:27:00的发言:

你这个函数每次都重新打开一次文件,写入一条记录的数据,没发现你有循环写入多个记录、也没发现你有定位文件位置的动作,怎么不该是每次覆盖第一条记录?都没说你每次不关闭文件造成的隐患,也没说你这样复制数据再写出是如何的多此一举了。
他那个循环在put函数中呢,我也觉得复制后写入好麻烦

新手发言,请多指教。
2013-01-11 23:31
zll310
Rank: 1
等 级:新手上路
帖 子:20
专家分:0
注 册:2013-1-11
收藏
得分:0 
回复 20楼 TonyDeng
那应该怎么改改阿,我已经做过好多的修改了,要不就是覆盖最后的要不就是覆盖前面的累
2013-01-11 23:32
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
首先,你不能把打开文件的动作写在这个函数中,这个函数每次只应该写入一条记录,直接把那个记录的指针传给函数,不用传整个数组,在外部调用处反复调用这个函数,每次更改一条记录。你整个架构错就错在每次都重新打开这个文件,那么它每次写入的位置就总是在文件的开始处,造成只有一条记录的结果。不需要在这里使用动态申请内存的,何况你原先的代码申请了也不释放,是大忌。

授人以渔,不授人以鱼。
2013-01-11 23:35
zll310
Rank: 1
等 级:新手上路
帖 子:20
专家分:0
注 册:2013-1-11
收藏
得分:0 
回复 21楼 wangjialong
我输入了2组数据,查找功能的时候还是把第一组数据覆盖掉了
2013-01-11 23:35
zll310
Rank: 1
等 级:新手上路
帖 子:20
专家分:0
注 册:2013-1-11
收藏
得分:0 
回复 24楼 TonyDeng
我使用了关闭指针的函数,可是还是查找不到我输入的第一组数据;
另外我只是想
把数据赋值给t方便以后的查找用指针
2013-01-11 23:38
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
你整个架构错就错在每次都重新打开这个文件,那么它每次写入的位置就总是在文件的开始处,造成只有一条记录的结果。

你都没有仔细看帖,其余的以后再说。在这个函数中与以后查找什么的完全没有关系,根本不需要有那样的想法。

授人以渔,不授人以鱼。
2013-01-11 23:40
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
告诉你这个函数的原型,你自己实现:
void save(struct bk* record, FILE* fp);


授人以渔,不授人以鱼。
2013-01-11 23:42
zll310
Rank: 1
等 级:新手上路
帖 子:20
专家分:0
注 册:2013-1-11
收藏
得分:0 
回复 27楼 TonyDeng
那在不删除这个函数的前提下,我如何修改阿
2013-01-11 23:46
wangjialong
Rank: 2
等 级:论坛游民
帖 子:77
专家分:95
注 册:2012-11-8
收藏
得分:0 
回复 23楼 zll310
照我那种改的话可以啊,我编了函数将输入数据打印出来了
以下是截图
图片附件: 游客没有浏览图片的权限,请 登录注册

新手发言,请多指教。
2013-01-11 23:50
快速回复:各位,你们看看为什么fwrite函数只能输出一组数据,程序能运行
数据加载中...
 
   



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

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