搜索
查看: 1514|回复: 7
打印 上一主题 下一主题

FILE类型的定义

[复制链接]
跳转到指定楼层
楼主
发表于 2014-10-3 21:20:15 | 显示全部楼层 回帖奖励 |倒序浏览 |阅读模式
5啊哈币
敝人在书上看到一些关于FILE数据类型的定义,大概看懂了那么一点点,但是打开stdio.h之后,看到这一段代码:
[mw_shl_code=c,true]/*
* The structure underlying the FILE type.
*
* Some believe that nobody in their right mind should make use of the
* internals of this structure. Provided by Pedro A. Aranda Gutiirrez
* <paag@tid.es>.
*/
#ifndef _FILE_DEFINED
#define        _FILE_DEFINED
typedef struct _iobuf
{
        char*        _ptr;
        int        _cnt;
        char*        _base;
        int        _flag;
        int        _file;
        int        _charbuf;
        int        _bufsiz;
        char*        _tmpfname;
} FILE;
#endif        /* Not _FILE_DEFINED */[/mw_shl_code]

当然,这洋文我是没看懂,第二,那些变量都是什么!(这是直接在啊哈C的目录里找到,望大神解答)
沙发
 楼主| 发表于 2014-10-5 21:24:30 | 显示全部楼层
rosynirvana 发表于 2014-10-3 21:47
这些变量对库的使用者没有意义,只能推测每个变量的含义
比较明显的是 _flag,文件打开的模式(读 写 追加 ...

我试了一下,
[mw_shl_code=c,true]void f()
{
FILE *fp;
fp = fopen ("Hello.txt", 'r');
printf ("%s\n", fp->_base);
}[/mw_shl_code]
其中Hello.txt文件里面为"Hello world!"
然后——它就给我输出“Hello world!”,那这是不是就说明_base不是缓冲区开始的位置?
板凳
 楼主| 发表于 2014-10-6 18:00:05 | 显示全部楼层
rosynirvana 发表于 2014-10-5 22:27
为什么不是?你明白缓冲区的含义吧?

我确实不怎么明白缓冲的含义
地板
 楼主| 发表于 2014-10-6 20:09:01 | 显示全部楼层
rosynirvana 发表于 2014-10-6 19:07
访问fp的标准库函数都只会从_base读取数据
你的那个例子刚好说明,fopen之后文件就有内容被拷贝到了_bas ...

好像是懂了,就像字符數組那樣。實在是多謝了。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

广播台
特别关注
快速回复 返回顶部 返回列表