免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: fwizard
打印 上一主题 下一主题

我的程序里边,为什么fwrite没有把数据写到文件里边啊? [复制链接]

论坛徽章:
0
11 [报告]
发表于 2004-04-28 12:57 |只看该作者

我的程序里边,为什么fwrite没有把数据写到文件里边啊?

[quote]原帖由 "liangtf"]仔细检查一下吧,极可能是人为原因。[/quote 发表:

逻辑上都N处错误了,还“极可能”“人为”?
I服了U!

论坛徽章:
0
12 [报告]
发表于 2004-04-28 13:08 |只看该作者

我的程序里边,为什么fwrite没有把数据写到文件里边啊?

>;>; 逻辑上都N处错误了,还“极可能”“人为”?

不知 FH 所说的 N 处错误表现在哪里,能给我们说说吗?我实在看不出楼主的程序有什么明显的错误。

论坛徽章:
0
13 [报告]
发表于 2004-04-28 13:10 |只看该作者

我的程序里边,为什么fwrite没有把数据写到文件里边啊?

原帖由 "FH" 发表:

逻辑上都N处错误了,还“极可能”“人为”?
I服了U!


不懂,望指点。

论坛徽章:
0
14 [报告]
发表于 2004-04-28 13:13 |只看该作者

我的程序里边,为什么fwrite没有把数据写到文件里边啊?

原帖由 "zkyguanl" 发表:
void putrec(FILE *fp,int i,struct record *r)
{
fseek(fp,(long)i*sizeof(struct record),0);
fwrite((char *)r,sizeof(struct record),1,fp);
}

问题在这里。你上来就 i=4,让文件指针转到那个地方。..........


程序没有问题.即使文件刚刚生成,文件指针也是可以移动的,请查阅APUE.中文版39页.
"文件位移量可以大于文件当前长度,...形成空洞文件"
上述的代码运行结果如下
===============================================
在UE中打开
    user1 烫烫烫   user2 烫烫烫   user3 烫烫烫   user4 烫烫烫   user5 烫烫烫
文件大小为80 字节 (80 字节)
所以,说明执行成功,写入四条记录,大小为4*sizeof(record)
===============================================
回答问题,最好不要主管臆断,试验下先,更不要说什么"人为错误的"唯心主义论调.
zkyguanl 该用户已被删除
15 [报告]
发表于 2004-04-28 13:15 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
0
16 [报告]
发表于 2004-04-28 13:19 |只看该作者

我的程序里边,为什么fwrite没有把数据写到文件里边啊?

下面是用16进制打开的文件datafile
可以分析,已经成功写入了数据.

datafile.GIF (4.51 KB, 下载次数: 83)

datafile.GIF

论坛徽章:
0
17 [报告]
发表于 2004-04-28 13:20 |只看该作者

我的程序里边,为什么fwrite没有把数据写到文件里边啊?

原帖由 "windflowers1976" 发表:
龅拇?朐诵薪峁?缦?
===============================================
在UE中打开
    user1 烫烫烫   user2 烫烫烫   user3 烫烫烫   user4 烫烫烫   user5 烫烫烫
文件大小为80 字节 (80 字节)
所以,说..........


喂,老兄你怎么知道没试验???可我用的是MDK的Linux系统
程序是没问题的,当然就出在系统或是其它方面的原因了,和程序代码本身原因比这难道不能说成是人为原因吗?

难道楼主成功了硬要说是空文件?!

主要是帮助别人解决问题,而我们不在用户环境下,还能怎么做?

不要妄下结论!

论坛徽章:
0
18 [报告]
发表于 2004-04-28 13:36 |只看该作者

我的程序里边,为什么fwrite没有把数据写到文件里边啊?

呵呵,不用生气.言语不当见谅.不是说你没有试验.
程序是没有问题的,不会产生空文件.
如果楼上的同志还以为是空文件,那请用WINDOWS UE和UNIX的HD命令打开看看.

论坛徽章:
0
19 [报告]
发表于 2004-04-28 14:41 |只看该作者

我的程序里边,为什么fwrite没有把数据写到文件里边啊?

【逻辑错误】看这里:
for(i=4;i>;=0;i--)
先用i=4调用putrec,对于空文件,fseek会怎样?
fseek和fwrite的返回码都不判!
对于空文件来说,最后写出的文件中应该包含几个记录,谁能说清楚?应该是3条记录而不是5条记录吧?
是不是产生空洞好像和系统相关吧?

论坛徽章:
0
20 [报告]
发表于 2004-04-28 14:43 |只看该作者

我的程序里边,为什么fwrite没有把数据写到文件里边啊?

谢谢,各位的关注,我的本意是倒着取数据,写到datafile里后,能看到正序的数据,主要是实验fseek的功能

vi datafile
显示内容如下(属性显示大小80k),现在有两个问题:
1.显示的内容显然不是我所要得到的,即使是大家实验的结果有点接近,怎么把"烫"去掉呢?
2.在我的solaris系统中直接打开该文件,看到的是空白的,也就是我前面所谓的程序没有写东西

ser1^C\377\314^Auser2^C\377\314^Buser3^C\377\314^Cuser4^C\377\314^Duser5
^C\377\314
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP