`
lobin
  • 浏览: 425831 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

C 第2000章: 文件

 
阅读更多

文件

FILE

 

FILE结构定义:

typedef struct _IO_FILE FILE;

 

struct _IO_FILE {
  int _flags;           /* High-order word is _IO_MAGIC; rest is flags. */
#define _IO_file_flags _flags

  /* The following pointers correspond to the C++ streambuf protocol. */
  /* Note:  Tk uses the _IO_read_ptr and _IO_read_end fields directly. */
  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;
#if 0
  int _blksize;
#else
  int _flags2;
#endif
  _IO_off_t _old_offset; /* This used to be _offset but it's too small.  */

#define __HAVE_COLUMN /* temporary */
  /* 1+column number of pbase(); 0 is unknown. */
  unsigned short _cur_column;
  signed char _vtable_offset;
  char _shortbuf[1];

  /*  char* _save_gptr;  char* _save_egptr; */

  _IO_lock_t *_lock;
#ifdef _IO_USE_OLD_IO_FILE
};

struct _IO_FILE_complete
{
  struct _IO_FILE _file;
#endif
#if defined _G_IO_IO_FILE_VERSION && _G_IO_IO_FILE_VERSION == 0x20001
  _IO_off64_t _offset;
# if defined _LIBC || defined _GLIBCPP_USE_WCHAR_T
  /* Wide character stream stuff.  */
  struct _IO_codecvt *_codecvt;
  struct _IO_wide_data *_wide_data;
  struct _IO_FILE *_freeres_list;
  void *_freeres_buf;
  size_t _freeres_size;
# else
  void *__pad1;
  void *__pad2;
  void *__pad3;
  void *__pad4;
  size_t __pad5;
# endif
  int _mode;
  /* Make sure we don't get into trouble again.  */
  char _unused2[15 * sizeof (int) - 4 * sizeof (void *) - sizeof (size_t)];
#endif
};

文件操作

 

打开模式

打开文件调用fopen函数的时候第2个参数需要指定一个模式,这个模式并不是要打开的磁盘上的文件的模式。在FILE中,也就是struct _IO_FILE结构体中有一个_mode成员,调用fopen的时候会指定_mode。

 

打开文件

fopen

函数原型

FILE * fopen ( const char * filename, const char * mode );

 

创建文件

创建文件也是调用fopen函数。如果文件不存在,打开模式mode只要指定了"w","a",包括"w+","a+",都会创建文件。

 

#include <stdio.h>
int main(int argc, char* argv[])
{
  FILE *fp;
  if (argc != 2)
  {
    printf("invalid args.\n");
    return 1;
  }
  fp = fopen(argv[1], "w");
  if (! fp)
  {
    printf("fopen err.\n");
    return 1;
  }
  fclose(fp);
  return 0;
}

读写

 

 

 

读写位置

 

fpos_t

#ifndef __USE_FILE_OFFSET64
typedef _G_fpos_t fpos_t;
#else
typedef _G_fpos64_t fpos_t;
#endif

_G_fpos_t

typedef struct
{
  __off_t __pos;
  __mbstate_t __state;
} _G_fpos_t;

_G_fpos64_t

typedef struct
{
  __off64_t __pos;
  __mbstate_t __state;
} _G_fpos64_t;

获取读写位置

fgetpos

函数原型

int fgetpos ( FILE * stream, fpos_t * pos );

 

ftell

函数原型

long int ftell ( FILE * stream );

 

设置读写位置

通过fsetpos,fseek都可以设置读写位置。

fsetpos

函数原型

int fsetpos ( FILE * stream, const fpos_t * pos );

 

fseek

函数原型

int fseek ( FILE * stream, long int offset, int origin );

 

读取文件

 

写入文件

 

 

 

 

0
3
分享到:
评论

相关推荐

    C++ How To Program (Instructor's Manual)

    18. **第19章:C遗留代码主题** - 讨论如何在C++中使用C风格的函数和库,以及C++对C语言的支持。 19. **第20章:标准模板库(STL)** - 详述STL容器(如vector、list、set等)、算法和迭代器的使用。 20. **第21章:...

    Programming Ruby

    - **第17章:Extending Ruby**:讲解如何使用C语言扩展Ruby的功能。 - **第18章至第23章**:这些章节涵盖了Ruby语言的核心特性,包括类和对象的高级主题、锁(lock)机制、反射(reflection)、分布式Ruby等。 #### 六...

    Linux Network Administrator's Guide, 2nd Edition

    14. **第十四章:网络文件系统(NFS)** - NFS允许远程主机共享文件系统资源,本章讲解了其配置细节。 15. **第十五章:IPX和NCP文件系统** - 探讨了Novell IPX协议和NCP文件系统的使用。 16. **第十六章:管理Taylor ...

    NIIT c#的课件PPT

    5. **第五章:字符串与文件操作** - 字符串处理方法 - 文件的读写操作 - 序列化与反序列化 6. **第六章:异常处理** - 异常的定义与分类 - try-catch-finally语句 - 自定义异常 7. **第七章:面向对象编程...

    人教版新课标八年级上册第一章:从世界看中国(测试卷).docx

    根据给定文件的信息,我们可以总结出以下相关的知识点: ### 一、选择题解析 #### 1、我国位于() 此题考察的是中国的地理位置。正确答案是 **C.①③⑤⑥**。 - **①北半球**:中国位于北半球。 - **③东半球**...

    嵌入式 ARM 基础精品教程ppt 二

    由于提供的压缩包文件列表中包含了第六到第八章的PPT文件,我们可以推断教程的后半部分将重点讨论LPC2000的编程实践、外部接口的应用,以及如何在嵌入式系统中使用RTOS。密码.txt文件意味着为了查看完整的教程内容,...

    第5章 C语言调试环境和编程

    【第5章 C语言调试环境和编程】 在嵌入式系统开发中,特别是针对DSP(数字信号处理器)如F28x系列,C语言调试环境和编程是至关重要的环节。F28x拥有全面的软件开发工具支持,包括C/C++编译器、汇编器、链接器以及...

    《加密和解密》(第二版) 前两章

    第1章 基础知识 第2章 代码分析技术第3章 静态分析技术第4章 动态分析技术第5章 软件保护技术及其弱点第6章 加密算法第7章 反编译语言第8章 PE文件格式第9章 增加PE文件功能第10章 反跟踪技术第11章 加壳与脱壳第12...

    谭浩强的C语言第四版PPT文件

    在谭浩强的C语言第四版中,第8章详细讲解了如何善用指针。 8.1 指针是什么 指针本质上是一个变量,它存储的是另一个变量的内存地址。内存地址是计算机内存中每个存储单元的唯一标识,就像旅馆房间的号码。通过这个...

    谭浩强书本C语言代码第二章

    根据给定的信息,我们可以从这些C语言代码片段中总结出一系列重要的编程概念和技术知识点: ### 知识点一:基础循环结构与运算 **代码片段示例:** ```c #include void main() { int i = 2, t = 1; while (i ) ...

    C Sharp完全手册.pdf

    ##### 第十七章:文件操作 - **17.1 .Net框架结构提供的I/O方式** - **文件流**:介绍File类和Stream类等用于文件操作的类。 - **17.2 文件存储管理** - **文件路径**:如何获取和设置文件路径。 - **文件属性**...

    Linux Programming Bible

    - **第5章**:理解Linux数据文件与脚本 - Linux下的文件格式与编码。 - 编写高效的数据处理脚本。 ##### 第二部分:C环境 - **第6章**:gcc入门 - gcc编译器的安装与配置。 - C语言程序的编译流程。 - 使用...

    PIC单片机常用模块与典型实例 代码及模拟文件

    chapter4:第4章 单片机C语言 S041: 最简单的C程序例子 S042: 移位运算符效果例子 S043: 初级的数码管动态显示例子 S044: 多文件项目管理例子 S045: 一位计数器例子 answer: 习题编程题答案 E041:编程题1答案 E042...

    Thinking in C++(英文版)

    11. **第11章:智能指针与资源管理** - 介绍了智能指针的概念,以及如何有效地管理动态分配的资源。 12. **第12章:设计模式** - 分享了一些常用的软件设计模式,帮助读者更好地组织代码结构。 #### 五、读者...

    mit xv6 unix第六版操作系统源码讲解

    #### 第6章:文件系统 文件系统是操作系统的重要组成部分,用于管理文件的存储、检索和更新。本章介绍了xv6中文件系统的实现细节。 - **文件系统结构**:描述文件系统的基本结构,包括超级块、inode表和数据块。 -...

    C++ 编程思想中文版

    - **对象的创建与使用**:此章与“对象导言”共同重构自第一版中的“对象的演化”章节,包含了最新的面向对象理论和实践。 - **C++中的C**:为初学者提供了必要的C语言背景知识,便于他们直接过渡到C++的学习。 2...

    计算机应用基础第二章测试题.pdf

    【计算机应用基础】第二章测试题主要涵盖了操作系统的基础知识,Windows系统的特性,文件管理,以及Windows界面和操作的常见概念。下面将详细解释这些知识点: 1. **操作系统的作用**:操作系统(OS)是计算机系统...

Global site tag (gtag.js) - Google Analytics