普通文件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. python守护进程

    1.守护进程 [1]使用runner这个模块直接创建守护进程,非常方便. [2]运行方法:python xxx.py start|stop|restart [3]调用python xxx.py sto ...

  2. 文件数据缓存(key-Value)

    为了解决大量数据缓存,消耗内存过多的问题,特别实现了文件缓存:该缓存主要是应用于多存少读的情况,一般我们做缓存是实现将数据放在内存中或者数据库中:放在内存中就会消耗很大内存,尤其在高并发大数据缓存时, ...

  3. Python数据类型的内置函数之list(列表)

    Python数据类型内置函数 - str(字符串) - list(列表) - tuple(元组) - dict(字典) - set(收集) list(列表)的操作 - (append)在列表最后追加指 ...

  4. Oracle两个数据库联合查询,使用Oracle DBLink

    创建dblink -- Create database link create shared database link COPYCITY_BZTOMY connect to db_A identif ...

  5. linux 文件描述符

    文件描述符是什么?和文件句柄有啥区别?文件描述符是linux/unix操作系统中特有的概念.相当于windows系统中的文件句柄.一个意思不同叫法.Linux系统中, 每当进程打开一个文件时,系统就为 ...

  6. Kafka(2)--kafka基本原理之消息的分发与接收

    关于 Topic 和 Partition Topic 在 kafka 中,topic 是一个存储消息的逻辑概念,可以认为是一个消息集合.每条消息发送到 kafka 集群的消息都有一个类别.物理上来说, ...

  7. UBNT ex-r +netgear gs105e v2 +ap 设置vlan 步骤记录 及相关知识整理

    设备连接:路由器ex-r的eth0 连接 光猫拨号,eth3连接交换机gs105e,交换机gs105e的eth3连接无线ap 需求:路由器拨号上网,通过不同ssid的无线网络可以连接不同vlan,且交 ...

  8. sqlserver2008R2 全日志恢复 实例操作

    --创建数据库create database test;--将数据库日志备份模式设置为全日志ALTER DATABASE test SET RECOVERY FULL ; --查询.确认数据库日志备份 ...

  9. Java面试题 BAT 大公司面试题整理总结!

    本文只列出了问题,答案还是需要需要自己的总结,很多时候自己总结出来的语言在面试时比硬背的效果好很多. 这些题目是网友去百度.小米.乐视.美团.58.猎豹.360.新浪.搜狐等一线互联网公司面试被问到的 ...

  10. VUE框架的初识

    VUE框架的初识 初步了解Vue.js框架(渐进式前端框架) Vue.js是一种轻量级的前端MVVM框架.同时吸收了React(组件化)和Angular(灵活指令页面操作)的优点.是一套构建用户界面的 ...