| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2176 人关注过本帖
标题:对于重复调用函数fgetc(fp) 下形参fp值是否改变的问题
只看楼主 加入收藏
黄昏黄昏
Rank: 2
等 级:论坛游民
帖 子:49
专家分:41
注 册:2013-1-10
收藏
得分:0 
回复 7楼 embed_xuel
下午刚看的,理解不是很深刻,有看到typedef struct {……}FILE,但是不明白其中的成员有什么意义,所以没仔细看,以后一定改

得不到的永远在骚动,被偏爱都有恃无恐
2013-02-06 18:11
黄昏黄昏
Rank: 2
等 级:论坛游民
帖 子:49
专家分:41
注 册:2013-1-10
收藏
得分:0 
回复 8楼 zklhp
谢谢斑竹的解释^_^

得不到的永远在骚动,被偏爱都有恃无恐
2013-02-06 18:13
洫魇
Rank: 2
等 级:论坛游民
帖 子:46
专家分:34
注 册:2013-2-5
收藏
得分:0 
FILE结构体:
struct _iobuf {
    char *_ptr;
    int _cnt;
    char *_base;
    int _flag;
    int _file;
    int _charbuf;
    int _bufsiz;
    char *_tmpfname;
  };
  typedef struct _iobuf FILE;
FILE指针只是一个结构体,应该是一个输入输出的缓冲区.fopen函数为每个结构体的元素赋值.
希望对你有帮助 :-)

一切,都在输给时间.
2013-02-06 19:05
洫魇
Rank: 2
等 级:论坛游民
帖 子:46
专家分:34
注 册:2013-2-5
收藏
得分:0 
不应该改变FILE的值,会出问题的.

一切,都在输给时间.
2013-02-06 19:06
黄昏黄昏
Rank: 2
等 级:论坛游民
帖 子:49
专家分:41
注 册:2013-1-10
收藏
得分:0 
回复 13楼 洫魇
嗯,我正在想弄明白这个结构体里每个变量的含义和作用,O(∩_∩)O谢谢

得不到的永远在骚动,被偏爱都有恃无恐
2013-02-06 23:02
洫魇
Rank: 2
等 级:论坛游民
帖 子:46
专家分:34
注 册:2013-2-5
收藏
得分:0 
回复 15楼 黄昏黄昏
O(^_^)O

一切,都在输给时间.
2013-02-07 09:09
YMC_TF
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2015-9-26
收藏
得分:0 
[b]想弄清出这个问题,首先在终端输入 vim -t FILE
图片附件: 游客没有浏览图片的权限,请 登录注册

这里FILE其实是 _IO_FILE 的重命名
接着在终端输入 vim -t _IO_FILE
就会看到这个_IO_FILE结构体
图片附件: 游客没有浏览图片的权限,请 登录注册

图片附件: 游客没有浏览图片的权限,请 登录注册

看到这里 你再看这个程序
图片附件: 游客没有浏览图片的权限,请 登录注册


再看输出的结果
图片附件: 游客没有浏览图片的权限,请 登录注册

这应该就明白了 其实fp1是不会改变的  fp1是一个结构体指针
在重复调用fgetc()时,变化的指针是ftp->_IO_read_ptr.
了解这个之外, 应该了解fgetc在调用时它的内部读取数据的过程,
首先从硬件磁盘读数据,从那个磁盘的文件读出一个字符读入到内存缓冲区
然后再从内从缓冲区将字符送到流缓存区,这里到了流缓存区就可以用它执行写等其他操作了。
这是我的理解,肯定有不足之处,交流qq1229399083


[ 本帖最后由 YMC_TF 于 2015-9-26 19:20 编辑 ]
2015-09-26 19:14
a923493063
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2016-5-31
收藏
得分:0 
谢谢各位解答,困扰了一上午的问题。
2016-05-31 10:29
快速回复:对于重复调用函数fgetc(fp) 下形参fp值是否改变的问题
数据加载中...
 
   



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

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