文件
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 );
读取文件
写入文件
相关推荐
18. **第19章:C遗留代码主题** - 讨论如何在C++中使用C风格的函数和库,以及C++对C语言的支持。 19. **第20章:标准模板库(STL)** - 详述STL容器(如vector、list、set等)、算法和迭代器的使用。 20. **第21章:...
- **第17章:Extending Ruby**:讲解如何使用C语言扩展Ruby的功能。 - **第18章至第23章**:这些章节涵盖了Ruby语言的核心特性,包括类和对象的高级主题、锁(lock)机制、反射(reflection)、分布式Ruby等。 #### 六...
14. **第十四章:网络文件系统(NFS)** - NFS允许远程主机共享文件系统资源,本章讲解了其配置细节。 15. **第十五章:IPX和NCP文件系统** - 探讨了Novell IPX协议和NCP文件系统的使用。 16. **第十六章:管理Taylor ...
5. **第五章:字符串与文件操作** - 字符串处理方法 - 文件的读写操作 - 序列化与反序列化 6. **第六章:异常处理** - 异常的定义与分类 - try-catch-finally语句 - 自定义异常 7. **第七章:面向对象编程...
根据给定文件的信息,我们可以总结出以下相关的知识点: ### 一、选择题解析 #### 1、我国位于() 此题考察的是中国的地理位置。正确答案是 **C.①③⑤⑥**。 - **①北半球**:中国位于北半球。 - **③东半球**...
由于提供的压缩包文件列表中包含了第六到第八章的PPT文件,我们可以推断教程的后半部分将重点讨论LPC2000的编程实践、外部接口的应用,以及如何在嵌入式系统中使用RTOS。密码.txt文件意味着为了查看完整的教程内容,...
【第5章 C语言调试环境和编程】 在嵌入式系统开发中,特别是针对DSP(数字信号处理器)如F28x系列,C语言调试环境和编程是至关重要的环节。F28x拥有全面的软件开发工具支持,包括C/C++编译器、汇编器、链接器以及...
第1章 基础知识 第2章 代码分析技术第3章 静态分析技术第4章 动态分析技术第5章 软件保护技术及其弱点第6章 加密算法第7章 反编译语言第8章 PE文件格式第9章 增加PE文件功能第10章 反跟踪技术第11章 加壳与脱壳第12...
在谭浩强的C语言第四版中,第8章详细讲解了如何善用指针。 8.1 指针是什么 指针本质上是一个变量,它存储的是另一个变量的内存地址。内存地址是计算机内存中每个存储单元的唯一标识,就像旅馆房间的号码。通过这个...
根据给定的信息,我们可以从这些C语言代码片段中总结出一系列重要的编程概念和技术知识点: ### 知识点一:基础循环结构与运算 **代码片段示例:** ```c #include void main() { int i = 2, t = 1; while (i ) ...
##### 第十七章:文件操作 - **17.1 .Net框架结构提供的I/O方式** - **文件流**:介绍File类和Stream类等用于文件操作的类。 - **17.2 文件存储管理** - **文件路径**:如何获取和设置文件路径。 - **文件属性**...
- **第5章**:理解Linux数据文件与脚本 - Linux下的文件格式与编码。 - 编写高效的数据处理脚本。 ##### 第二部分:C环境 - **第6章**:gcc入门 - gcc编译器的安装与配置。 - C语言程序的编译流程。 - 使用...
chapter4:第4章 单片机C语言 S041: 最简单的C程序例子 S042: 移位运算符效果例子 S043: 初级的数码管动态显示例子 S044: 多文件项目管理例子 S045: 一位计数器例子 answer: 习题编程题答案 E041:编程题1答案 E042...
11. **第11章:智能指针与资源管理** - 介绍了智能指针的概念,以及如何有效地管理动态分配的资源。 12. **第12章:设计模式** - 分享了一些常用的软件设计模式,帮助读者更好地组织代码结构。 #### 五、读者...
#### 第6章:文件系统 文件系统是操作系统的重要组成部分,用于管理文件的存储、检索和更新。本章介绍了xv6中文件系统的实现细节。 - **文件系统结构**:描述文件系统的基本结构,包括超级块、inode表和数据块。 -...
- **对象的创建与使用**:此章与“对象导言”共同重构自第一版中的“对象的演化”章节,包含了最新的面向对象理论和实践。 - **C++中的C**:为初学者提供了必要的C语言背景知识,便于他们直接过渡到C++的学习。 2...
【计算机应用基础】第二章测试题主要涵盖了操作系统的基础知识,Windows系统的特性,文件管理,以及Windows界面和操作的常见概念。下面将详细解释这些知识点: 1. **操作系统的作用**:操作系统(OS)是计算机系统...