普通文件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

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普通文件操作整理,有错误请指出;

参考:

linux io函数,Linux下普通IO文件操作函数---C语言相关推荐

  1. linux 复制指定目录下的全部文件到另一个目录中,linux cp 文件夹

    前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家.点击跳转到教程. linux复制指定目录下的全部文件到另一个目录中 复制指定目录下的全部文件到另一个目录中 文件及目录 ...

  2. linux系统(ubuntu)下安装exe文件

    linux系统(ubuntu)下安装exe文件 昨天将家中的旧笔记本翻出来安装了ubuntu20.04.1,想在电脑中安装exe文件时,不能直接打开. 于是借鉴网络中的方法(https://blog. ...

  3. Linux学习-文件IOA1——用结构体和文件操作函数实现文件的拷贝

    Linux学习-文件IOA1--用结构体和文件操作函数实现文件的拷贝 其实我们不必选用结构体去实现模仿拷贝功能的,但是为了锻炼我们的思维以及对结构体.文件操作函数的使用,所以我们就这样来折腾自己. 学 ...

  4. linux cp目录到指定目录,linux复制指定目录下的全部文件到另一个目录中,linux cp 文件夹...

    解压war包    jar -xvf   xxxx.war linux复制指定目录下的全部文件到另一个目录中 复制指定目录下的全部文件到另一个目录中 文件及目录的复制是经常要用到的.linux下进行复 ...

  5. Linux 高并发学习笔记 - Linux 文件操作函数

    1.6.2 Linux 文件操作函数 Linux 高并发学习笔记 - 笔记索引 前言 关于文件操作函数这一块主要用英文文档的形势书写,因为凉皮在写文档的时候发现Markdown用起来太繁琐了.那么关于 ...

  6. Linux bash 命令行下实现可视化文件或文件夹浏览

    Linux bash 命令行下实现可视化文件或文件夹浏览 文章目录 前言 最终解决方案 代码 看起来像这样 使用方式 获取用户选择的文件/文件夹 我怎么知道用户选择的是文件还是文件夹 我可不可以在C等 ...

  7. linux c文件操作,C语言文件操作(FILE)与常用文件操作函数

    文件 1.文件基本概念 C程序把文件分为ASCII文件和二进制文件,ASCII文件又称文本文件,二进制文件和文本文件(也称ASCII码文件)二进制文件中,数值型数据是以二进制形式存储的, 而在文本文件 ...

  8. Linux编程基础学习2.2:文件操作、3.1:进程管理-1

    文件操作函数 1.stat函数 用于获取文件属性,包括文件的文件名.文件大小.文件类型等等 #include <sys/stat.h> int stat(const char *path, ...

  9. Linux的简单shell脚本中修改文件操作

    Linux的简单shell脚本中修改文件操作 Linux Shell常用技巧(三) sed 八.流编辑器sed 8.1 sed简介 sed是stream editor的缩写,一种流编辑器,它一次处理一 ...

  10. C语言文件操作函数大全(看到总结的真的很好,就转载贡献给大家了)

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

最新文章

  1. 【Linux+Mono+Asp.net公开课】视频下载
  2. python与excel表格-Python操作 Excel表格
  3. python哪一版好用-最好的 Python IDE,你们推荐使用哪一个?
  4. linux 系统打造man中文帮助手册图解
  5. 非对称加密算法 --- RSA签名算法
  6. C#绘制立体三维饼状图(超酷)
  7. mysql为何500w拆表_【mysql】MySQL 单表500W+数据,查询超时,如何优化呢?
  8. DispatcherServlet与初始化主线
  9. struts2中的addActionError addFieldError addActionMessage的方法
  10. 记录MySql错误消息
  11. Transformer-XL、Vanilla Transformer
  12. 传智播客数据绑定和数据库开发基础(第四季)-杨中科
  13. 思维导图软件哪个好?不要错过这份思维导图软件合集
  14. 聚类算法效果衡量标准
  15. 免杀横向移动工具WMIHACKER
  16. Pipeline并行处理模型
  17. 聚焦存储即平台,浪潮存储迎来发展新机遇
  18. Exiftool not found metadata operations disabled 索尼相机查如何查快门教程
  19. C#基于联通短信Sgip协议构建短信网关程序.net
  20. ThreadLocal 面试夺命11连问

热门文章

  1. Linux图形分区编辑器 GParted Live 1.0 Beta 发布
  2. Linux CUT命令笔记
  3. Linux-Load Average解析
  4. 一个JQuery发送ajax请求
  5. 20145223《信息安全系统设计基础》 GDB调试汇编堆栈过程分析
  6. Java8 HashMap实现原理探究
  7. DELPHI replace into 语句的语法错误 解决方法
  8. 目录服务技术介绍——ADSI(三)
  9. showimg.php,layer弹出图片
  10. java枚举变量带括号_Java~如何使用Enum(枚举)和Lambda表达式