标准 I/O 的核心操作

简介: 标准 I/O 的核心操作

标准I/O的操作都是围绕stream )来进行的。在标准I/O中,流用 FILE* 来描述。而每个被使用的文件都在内存中开辟一个区域,用来存放文件的有关信息,这些信息是保存在一个结构体类型的变量中的,该结构体类型是由系统定义的,取名为 FILE

因此, FILE 本质就是一个结构体,一个与被操作的文件所对应的结构体(该结构体描述了该文件)。而对于标准I/O来说,如果需要对文件尽心操作,只需要操作与该文件所对应的结构体指针即可完成。也就是 FILE*FILE* 通常也被称为流指针


FILE 结构体可在 <stdio.h> 中查看。

typedef struct _IO_FILE FILE;
struct _IO_FILE
{
  int _flags;        /* High-order word is _IO_MAGIC; rest is flags. */
  /* The following pointers correspond to the C++ streambuf protocol. */
  char *_IO_read_ptr;    /* Current read pointer */
  char *_IO_read_end;    /* End of get area. */
  char *_IO_read_base;    /* Start of putback+get area. */
  char *_IO_write_base;    /* Start of put area. */
  char *_IO_write_ptr;    /* Current put pointer. */
  char *_IO_write_end;    /* End of put area. */
  char *_IO_buf_base;    /* Start of reserve area. */
  char *_IO_buf_end;    /* End of reserve area. */
  /* The following fields are used to support backing up and undo. */
  char *_IO_save_base; /* Pointer to start of non-current get area. */
  char *_IO_backup_base;  /* Pointer to first valid character of backup area */
  char *_IO_save_end; /* Pointer to end of non-current get area. */
  struct _IO_marker *_markers;
  struct _IO_FILE *_chain;
  int _fileno;
  int _flags2;
  __off_t _old_offset; /* This used to be _offset but it's too small.  */
  /* 1+column number of pbase(); 0 is unknown. */
  unsigned short _cur_column;
  signed char _vtable_offset;
  char _shortbuf[1];
  _IO_lock_t *_lock;
#ifdef _IO_USE_OLD_IO_FILE
};
struct _IO_FILE_complete
{
  struct _IO_FILE _file;
#endif
  __off64_t _offset;
  /* Wide character stream stuff.  */
  struct _IO_codecvt *_codecvt;
  struct _IO_wide_data *_wide_data;
  struct _IO_FILE *_freeres_list;
  void *_freeres_buf;
  size_t __pad5;
  int _mode;
  /* Make sure we don't get into trouble again.  */
  char _unused2[15 * sizeof (int) - 4 * sizeof (void *) - sizeof (size_t)];
};点击复制复制失败已复制


其中, _IO_buf_base_IO_buf_end 类型为 char* ,表示标准I/O操作的缓存区的起始以及结尾地址

目录
相关文章
|
11月前
|
数据采集 监控 安全
数据标准应用(三):数据标准落标监控-下篇
数据标准创建完成后,需要指定其关联的资产对象才能发挥应用价值。数据标准和资产对象的映射关系通过落标映射规则来管理,对象是否遵循了映射到的标准定义则通过落标监控规则来判断。本文为您介绍落标监控评估的基本概念和监控逻辑。Dataphin 支持通过定义标准属性和资产对象元数据字段之间的匹配关系,自动生成数据标准和资产对象的映射关联;针对已确定的映射关系,可结合数据标准的定义对关联的资产对象进行落标监控,包括元数据监控和内容质量监控。上篇,我们为大家介绍了数据标准监控的分类和配置方式,本期我们将为您介绍配置好的落标监控如何生效以及如何查看监控结果。
442 0
|
1月前
|
安全 编译器 测试技术
C++代码复用策略及与标准兼容性指南
C++代码复用策略及与标准兼容性指南
120 2
|
10月前
|
编译器 C语言 C++
【C++】---基础特性
【C++】---基础特性
65 0
|
1月前
【突破常规:让函数规范成为注目的亮点】(上)
【突破常规:让函数规范成为注目的亮点】
|
1月前
【突破常规:让函数规范成为注目的亮点】(下)
【突破常规:让函数规范成为注目的亮点】
|
10月前
|
自然语言处理 数据管理
数据标准和数据规范到底有什么区别???
数据标准和数据规范到底有什么区别???
|
10月前
|
数据采集 存储 数据管理
相比DCMM,DMBOK为什么没有数据标准?
相比DCMM,DMBOK为什么没有数据标准?
|
数据采集 存储 监控
数据标准应用(二):数据标准落标监控-上篇
数据标准创建完成后,需要指定其关联的资产对象才能发挥应用价值。数据标准和资产对象的映射关系通过落标映射规则来管理,对象是否遵循了映射到的标准定义则通过落标监控规则来判断。本文为您介绍落标监控评估的基本概念和监控逻辑。Dataphin 支持通过定义标准属性和资产对象元数据字段之间的匹配关系,自动生成数据标准和资产对象的映射关联了;针对已确定的映射关系,可结合数据标准的定义对关联的资产对象进行落标监控,包括元数据监控和内容质量监控。
1011 0
|
存储 XML 编译器
【C#基础】C# 程序通用结构
编程语言C# 程序结构的介绍 。
193 0
【C#基础】C# 程序通用结构
|
数据采集 存储 安全
数据标准体系框架规划【参考】
随着公司数字化转型的深入建设和数字化水平的提升,公司积累了海量的数据信息。
数据标准体系框架规划【参考】