普通文件IO总结

FILE结构体

    typedef struct 
  {  
    int level; /*填充/清空一级缓存*/
    unsigned flag; /*文件状态指针*/
    char fd; /*文件描述符*/
    unsigned char hold; /*ungetc char if no buffer*/
    int bsize; /*缓存区大小*/
    unsigned char *buffer; /*数据缓冲区*/
    unsigned char *curp; /*当前活动指针*/
    unsigned istemp; /*临时文件指示器*/
    short token; /*用于有效性检查*/
  }FILE;  

打开文件fopen函数

文件指针名=fopen(文件名,使用文件方式)

eg:

FILE *fp;               //文件指针
fp=("file a","r"); //以只读方式打开hzk16

打开方式有:

描述符 意义
“rt” 只读打开一个文本文件,只允许读数据
“wt” 只写打开或建立一个文本文件,只允许写数据
“at” 追加打开一个文本文件,并在文件末尾写数据
“rb” 只读打开一个二进制文件,只允许读数据
“wb” 只写打开或建立一个二进制文件,只允许写数据
“ab” 追加打开一个二进制文件,并在文件末尾写数据
“rt+” 读写打开一个文本文件,允许读和写
“wt+” 读写打开或建立一个文本文件,允许读写
“at+” 读写打开一个文本文件,允许读,或在文件末追加数 据
“rb+” 读写打开一个二进制文件,允许读和写
“wb+” 读写打开或建立一个二进制文件,允许读和写
“ab+” 读写打开一个二进制文件,允许读,或在文件末追加数据

fopen若过出错则,返回一个NULL可以用作错误异常处理的判断条件;

fclose函数

用于关闭当前文件 fclose(FILE*);返回值为0表示正确,非零错误。

文件读写操作:

·字符读写函数 :fgetc和fputc ·字符串读写函数:fgets和fputs ·数据块读写函数:freed和fwrite ·格式化读写函数:fscanf和fprinf

fgetc(FILR*)与fputc(const char,FILE*)/fputc(char,FILE*):

fgetc每次在文件中读一个字节,每读一次文件内的字符指针往后挪一位,可多次重复使用依此读出文件内容。

fput函数每次写入一个字符,每写一次文件内指针向后挪动一位,可多次连续使用写入。

fgets(char* buf, int n, FILE*)与fputs(char* buf, FILE*):

从文件中读出 n-1 个字符放入buf中

fputs将字符串写入文件中

fread(cahr* buf, int size, int count,FILE* fp)与fwrite(char* buf, int size, int count,FILE* fp)

fread 从fp中读入conut个size长度的字符串到buf中

fwirte从buf中读出count个size个长度的字符串到fp中

fscanf(FILE*, 格式, 列表)和 fprintf(FILE*, 格式, 列表)

eg:

fprintf(fp,"%s %d %d %s",pp->name,pp->num,pp->age,pp->addr);

fscanf(fp,"%s %d %d %s",qq->name,&qq->num,&qq->age,qq->addr);

rewind(FILE*)

将文件内部指针移到文件首

fseek(FILE* fp,int count,int startpoint)

fp 文件指针

count 位移量,表示从startpoint开始计算位移量

startpoint有三种形式:

起始点 表示符
SEEK—SET 0
当前 SSEEK-CUR 1
SSEEK-END 2

设置bu模式函数

#include <stdio.h>

void setbuf(FILE *stream, char *buf);

int setvbuf(FILE *stream, char *buf, int mode, size_t size);

void setbuffer(FILE *stream, char *buf, size_t size);

void setlinebuf(FILE *stream);

     

setbuf 与 setvbuf 指定缓冲区(在读写文件之前),将不再使用系统默认的缓冲区

setbuf(fp, NULL) 使得文件不带缓冲区

setbuf(ffp , NULL, _IONBF , 0 ) 在此情况下与setbuf(fp, NULL)相同

setbuf 中参数:

stream表示操作文件;

buf 缓冲区,;

mode 模式;

size 大小。

setbuffer函数

此函数与setbuf函数类似,好在可自定义buf的大小

setlinebuf函数

此函数等价于setvbuf(fp, (char *) NULL, _IOLBF, 0);

小点:

stdin 0 标准输入

stdout 1 标准输出

stderr 2 标准错误

_IONBF 无缓冲

_IOLBF 行缓冲

_IOFBF 全缓冲

_IO_LINE_BUF 行缓冲

_IO_UNBUFFERED 无缓冲

对IO普通文件操作整理,有错误请指出;

参考:http://www.cnblogs.com/whiteyun/archive/2009/08/08/1541822.html

Linux下普通IO文件操作函数---C语言的更多相关文章

  1. Linux C 文件操作函数(~上善止水~)

    翻翻笔记,整理一下 C 语言中的文件操作函数 ~~~~~~,多注意细节,maybe 细节决定成败~ 1. fopen /* fopen(打开文件) * * 相关函数 open,fclose * * 表 ...

  2. Linux C 下的大文件操作

    这里说的大文件指大小超过4G的文件. 在32位环境下,linux默认打开.读.写超过4G的文件会返回错误.定义如下宏可以突破这个限制,对read/write和fread/fwrite同时有效. 注意它 ...

  3. 查看Linux下*.a库文件中文件、函数、变量

    查看Linux下*.a库文件中文件.函数.变量等情况在Linux 下经常需要链接一些 *.a的库文件,那怎么查看这些*.a 中包 含哪些文件.函数.变量: 1. 查看文件:ar -t xxx.a 2. ...

  4. C语言文件操作函数

    C语言文件操作函数大全 clearerr(清除文件流的错误旗标) 相关函数 feof表头文件 #include<stdio.h> 定义函数 void clearerr(FILE * str ...

  5. 【转载】在Linux下,一个文件也有三种时间,分别是:访问时间、修改时间、状态改动时间

    在windows下,一个文件有:创建时间.修改时间.访问时间.而在Linux下,一个文件也有三种时间,分别是:访问时间.修改时间.状态改动时间. 两者有此不同,在Linux下没有创建时间的概念,也就是 ...

  6. linux 下各个头文件的作用[典]

    linux 下各个头文件的作用   2.6.30.4的头文件的位置和2.6.25.8的不一样,除去内核源码下的include目录外, 在arch/arm/mach-s3c2410/和arch/arm/ ...

  7. C语言文件操作函数大全(超详细)

    C语言文件操作函数大全(超详细) 作者: 字体:[增加 减小] 类型:转载 本篇文章是对C语言中的文件操作函数进行了详细的总结分析,需要的朋友参考下   fopen(打开文件)相关函数 open,fc ...

  8. linux下的IO模型---学习笔记

    1.linux文件系统和缓存 文件系统接口 文件系统-一种把数据组织成文件和目录的存储方式,提供了基于文件的存取接口,并通过文件权限控制访问. 存储层次 文件系统缓存 主存(通常时DRAM)的一块区域 ...

  9. Linux下的IO监控与分析

    Linux下的IO监控与分析 近期要在公司内部做个Linux IO方面的培训, 整理下手头的资料给大家分享下 各种IO监视工具在Linux IO 体系结构中的位置 源自 Linux Performan ...

随机推荐

  1. Angular中的服务的使用

    定义公共的方法,使得方法在组件之间共享调用 1. 创建服务命令 ng g service modbus-service # 创建服务到指定目录下 ng g service services/modbu ...

  2. DynamicEnumUtil 动态添加枚举类的枚举值

    import java.lang.reflect.AccessibleObject; import java.lang.reflect.Array; import java.lang.reflect. ...

  3. 01-使用eclipse新建一个标准的 java web项目

    1.使用eclipse创建个普通的Java SE项目  名称:CRM java web标准目录结构 crm WEB-INF classes lib web.xml 设置项目字节码输出目录

  4. solr参数之facet

    facet就像sql语句中的group一样,是对某一个字段进行group并count,即能够按照Facet的字段进行分组并统计. 一.基本使用: 必须属性:facet=true&facet.f ...

  5. Error occurred during initialization of VM Could not reserve enough space for object heap

    Error occurred during initialization of VM Could not reserve enough space for object heap Java虚拟机(JV ...

  6. oracle填坑之PLSQL中文显示为问号

    刚入坑oracle就遇到个坑. 坑描述: 系统:Windows7 oracle:同时安装,11g和12c(安装顺序,先装的12c然后装的11g) 坑:开始安装的12c用SQL Developer使用本 ...

  7. python模块 os&sys&subprocess&hashlib模块

    os模块 # os模块可根据带不带path分为两类 # 不带path print(os.getcwd()) # 得到当前工作目录 print(os.name) # 指定你正在使用的操作系统,windo ...

  8. excel 拷贝数据到 plsql 报 is not a valid date and time

    按以下格式设置时间格式

  9. mybatis学习 -每天一记 通用mapper 关于UUID回显的配置

    在使用通用mapper插入数据UUID回显 在使用通用mapper插入数据时,发现主键没有回显,我这里的主键是UUID的,解决方案是:配置一个MapperScannerConfigurer. @Bea ...

  10. 在引用阿里云库或其他库的时候,经常发生框架不兼容(原因是系统采用:Microsoft .NET Framework 4 Client Profile ),请改为Microsoft .NET Framework 4

    在引用阿里云库或其他库的时候,经常发生框架不兼容(原因是系统采用:Microsoft .NET Framework 4 Client Profile ),请改为Microsoft .NET Frame ...