设为首页
收藏本站
用户名
Email
自动登录
找回密码
密码
登录
注册
快捷导航
平台
Portal
论坛
BBS
文库
项目
群组
Group
我的博客
Space
搜索
搜索
热搜:
shell
linux
mysql
本版
用户
LinuxSir.cn,穿越时空的Linuxsir!
»
论坛
›
编程开发讨论区 —— LinuxSir.cn
›
Linux 程序设计专题讨论
›
文件指针到底是个什么东西???(已解决) ...
返回列表
查看:
1251
|
回复:
7
文件指针到底是个什么东西???(已解决)
[复制链接]
godpig
godpig
当前离线
积分
30
IP卡
狗仔卡
发表于 2008-1-13 22:10:27
|
显示全部楼层
|
阅读模式
我的代码是这样的:
int main()
{
FILE *mystream = fopen("***.txt","rw");
write_data(mystream);
}
void write_data(FILE *fp)
{
while(1)
{
readnum = fread(buf, 1024, 1, fp);
}
}
这段代码说明了主要的内容
我编译链接后,在gdb中进行调试
发现,readnum每次都为0,且每次读取的文件的内容都是一样的
也就是说,程序死在这儿了,不断的读取着相同的内容,根本不会到达文件未尾。
难道这里进行参数传递的时候有问题吗??
还是…………
真是迷惑不解呀
我将write_data的参数变成指向指针的指针,即write_data(FILE **)
结果还是一样。
不知道这是什么原因造成的?
回复
使用道具
举报
提升卡
置顶卡
沉默卡
喧嚣卡
变色卡
显身卡
gamedragon
gamedragon
当前离线
积分
568
IP卡
狗仔卡
发表于 2008-1-13 22:28:07
|
显示全部楼层
while(1)
{
readnum = fread(buf, 1024, 1, fp);
}
不管读出什么来,这确实是个死循环。
回复
支持
反对
使用道具
举报
显身卡
godpig
godpig
当前离线
积分
30
IP卡
狗仔卡
楼主
|
发表于 2008-1-13 23:00:22
|
显示全部楼层
我这是简写的
其实有条件break的
我用gdb单步的时候,发现每次读入的数据都是相同的
就好像每次rewind(fp),然后再读似的
回复
支持
反对
使用道具
举报
显身卡
dave3068
dave3068
当前离线
积分
482
IP卡
狗仔卡
发表于 2008-1-14 09:41:57
|
显示全部楼层
fread 的返回值是成功读入的 “单位”数
(“单位”是指在第三个参数指定的字节数,比如你上面的是1个字节)
回复
支持
反对
使用道具
举报
显身卡
x11
x11
当前离线
积分
2823
IP卡
狗仔卡
发表于 2008-1-14 14:10:54
|
显示全部楼层
上面是1024字节
莫非是文件没这么长,所以每次都返回0
回复
支持
反对
使用道具
举报
显身卡
godpig
godpig
当前离线
积分
30
IP卡
狗仔卡
楼主
|
发表于 2008-1-14 18:31:55
|
显示全部楼层
具体原因还不知道
不过,在使用这个文件之前,先关闭,然后在函数中再打开,就正常了
回复
支持
反对
使用道具
举报
显身卡
newroot
newroot
当前离线
积分
220
IP卡
狗仔卡
发表于 2008-2-3 12:27:02
|
显示全部楼层
只要文件不为空,不管长度够不够,第一次总应该不为0
回复
支持
反对
使用道具
举报
显身卡
newroot
newroot
当前离线
积分
220
IP卡
狗仔卡
发表于 2008-2-3 13:46:13
|
显示全部楼层
Post by
godpig;1807077
具体原因还不知道
不过,在使用这个文件之前,先关闭,然后在函数中再打开,就正常了
你重新打开的方法,参数都一样吗?
回复
支持
反对
使用道具
举报
显身卡
返回列表
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
|
注册
本版积分规则
发表回复
回帖后跳转到最后一页
Copyright © 2002-2023
LinuxSir.cn
(http://www.linuxsir.cn/) 版权所有 All Rights Reserved.
Powered by
RedflagLinux!
技术支持:
中科红旗
|
京ICP备19024520号
快速回复
返回顶部
返回列表