文件操作
文件的打开

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

文件的打开操作 fopen 打开一个文件

(几种操作文件的组合)

文件的关闭操作

int fclose(FILE *fp);

fclose 关闭一个文件

文件的读写操作

读取单个字符

fgetc 从文件中读取一个字符 int fgetc(FILE * fp);

fputc 写一个字符到文件中去 int fput(int c,FILE * fp); 

读取字符串  

fgets 从文件中读取一个字符串 char * fgets(char * s,int n,FILE *fp);

从文件中读取字符串并在字符串末尾添加'\0',然后存入s,最多读入n-1个字符

当读到换行符、到达文件末尾或者读满n-1个字符,函数返回该字符串的首地址

读取失败返回空指针NULL

因为出错和到达文件末尾都返回NULL,因此应该使用feof()和ferror()来确定函

数fget()返回NULL的实际原因

fgets()从指定的流读字符串,读到换行符时将换行符也作为字符串的一部分读到

字符串中来

fputs 写一个字符串到文件中去 int fputs(const char * s,FILE *fp);

出现写入错误返回EOF,否则返回一个非负数

fputs()不会在写入文件的字符串末尾加上换行符

按格式读写文件

fprintf 往文件中写格式化数据 int fprintf(FILE * fp,const char * format,...)

第一个参数为文件指针,第二个参数是格式控制参数,第三个是输出参数列表

fscanf 格式化读取文件中数据 int fscanf(FILE * fp,const char * format,...)

第一个参数为文件指针,第二个参数是格式控制参数,第三个是地址参数列表

按格式读写文件需要知道输出和地址参数,比较麻烦(个人认为)

按数据块读写文件

fread 以二进制形式读取文件中的数据

unsigned int fread(void * buffer,unsigned int size,unsigned int count,FILE * fp)

从fp所指的文件中读取数据并存储到buffer所指向的内存中

buffer待读入数据块的起始地址

size每个数据块的大小(待读入每个数据块的字节数)

count最多允许读取数据块的个数

函数返回的是实际读到的数据块个数

fwrite 以二进制形式写数据到文件中去

unsigned int fwrite(void * buffer,unsigned int size,unsigned int count,FILE * fp)

buffer待输出数据块的起始地址

size每个数据块的大小(待读入每个数据块的字节数)

count最多允许读取数据块的个数

函数返回的是实际读到的数据块个数

这两个函数常于二进制文件的输入和输出

getw 以二进制形式读取一个整数

putw 以二进制形式存贮一个整数

文件状态检查函数

feof 文件结束 int feof(FILE * fp);

ferror 文件读/写出错 int ferror(FILE *fp);

文件出现错误函数返回非0值,否则,函数返回0

clearerr 清除文件错误标志

ftell 了解文件指针的当前位置 long tell(FILE * fp);

成功返回文件当前读写位置,否则返回-1L

文件定位函数

rewind 反绕重置位置指针到文件首部 void rewind(FILE * fp);

fseek 随机定位 int fseek(FILE *fp,long offset,int fromwhere);

功能:将fp的文件位置指针从fromwhere开始移动offset个字节指示下一个要读取的位置
offset(偏移量)为正向后移动 为负向前移动 要求为长整型数据(常量数据后面要加L)
fromwhere有三种取值:SEEK_SET/0表示文件来时处 SEEK_CUR/1表示文件当前位置 SEEK_END/2表示文件结尾处

补充:

int fflush(FILE * fp);

无条件地把缓冲区的所有数据写入物理设备

【C】文件操作的更多相关文章

  1. 【.NET深呼吸】Zip文件操作(1):创建和读取zip文档

    .net的IO操作支持对zip文件的创建.读写和更新.使用起来也比较简单,.net的一向作风,东西都准备好了,至于如何使用,请看着办. 要对zip文件进行操作,主要用到以下三个类: 1.ZipFile ...

  2. 野路子出身PowerShell 文件操作实用功能

    本文出处:http://www.cnblogs.com/wy123/p/6129498.html 因工作需要,处理一批文件,本想写C#来处理的,后来想想这个是PowerShell的天职,索性就网上各种 ...

  3. Node基础篇(文件操作)

    文件操作 相关模块 Node内核提供了很多与文件操作相关的模块,每个模块都提供了一些最基本的操作API,在NPM中也有社区提供的功能包 fs: 基础的文件操作 API path: 提供和路径相关的操作 ...

  4. 归档NSKeyedArchiver解归档NSKeyedUnarchiver与文件管理类NSFileManager (文件操作)

    ========================== 文件操作 ========================== 一.归档NSKeyedArchiver 1.第一种方式:存储一种数据. // 归档 ...

  5. SQL Server附加数据库报错:无法打开物理文件,操作系统错误5

    问题描述:      附加数据时,提示无法打开物理文件,操作系统错误5.如下图: 问题原因:可能是文件访问权限方面的问题. 解决方案:找到数据库的mdf和ldf文件,赋予权限即可.如下图: 找到mdf ...

  6. 通过cmd完成FTP上传文件操作

    一直使用 FileZilla 这个工具进行相关的 FTP 操作,而在某一次版本升级之后,发现不太好用了,连接老是掉,再后来完全连接不上去. 改用了一段时间的 Web 版的 FTP 工具,后来那个页面也 ...

  7. Linux文件操作的主要接口API及相关细节

    操作系统API: 1.API是一些函数,这些函数是由linux系统提供支持的,由应用层程序来使用,应用层程序通过调用API来调用操作系统中的各种功能,来干活 文件操作的一般步骤: 1.在linux系统 ...

  8. C语言的fopen函数(文件操作/读写)

    头文件:#include <stdio.h> fopen()是一个常用的函数,用来以指定的方式打开文件,其原型为:    FILE * fopen(const char * path, c ...

  9. Python的文件操作

    文件操作,顾名思义,就是对磁盘上已经存在的文件进行各种操作,文本文件就是读和写. 1. 文件的操作流程 (1)打开文件,得到文件句柄并赋值给一个变量 (2)通过句柄对文件进行操作 (3)关闭文件 现有 ...

  10. python 文件操作(转)

    python中对文件.文件夹(文件操作函数)的操作需要涉及到os模块和shutil模块. 得到当前工作目录,即当前Python脚本工作的目录路径: os.getcwd() 返回指定目录下的所有文件和目 ...

随机推荐

  1. Java内部类(1):概述

    > 将一个类的定义放在另一个类的定义内部,这就是内部类. > 使用内部类最吸引人的原因是:每个内部类都能独立地继承一个(接口的)实现,所以无论外围类是否已经继承了某个(接口的)实现,对于内 ...

  2. 安装mysql-proxy

    1.下载安装包 wget https://cdn.mysql.com/archives/mysql-proxy/mysql-proxy-0.8.5-linux-glibc2.3-x86-64bit.t ...

  3. c++ static_cast和dynamic_cast详解

    注:从图中可以看出,派生类不仅有自己的方法和属性,同时它还包括从父类继承来的方法和属性.当我们从派生类向基类转换时,不管用传统的c语言还是c++转换方式都可以百分百转换成功.但是可怕是向下转换类型,也 ...

  4. Javascript学习笔记四——操作表单

    Javascript学习笔记 大多网页比如腾讯,百度云之类的需要登陆,用户输入账号密码就可以登陆,那么浏览器是如何获取用户的输入的呢?今天就记录一下操作表单. 操作表单与操作DOM是差不多的,表单本身 ...

  5. Ubuntu 下几种软件安装的方法小结

    1.tar.gz软件包的安装 1)解压tar.gz包 .tar.gz -C /home/Desktop # 将软件包名.tar.gz解压到指定的目录下 2)进入解压后的文件目录下      执行“./ ...

  6. [HNOI2008]越狱 题解

    题面: 我们知道:相邻房间的犯人的宗教相同的方案数=总方案数-相邻房间的犯人的宗教不相同的方案数: 那么所有方案数是m^n; 我们假设第一个房间有m中取值方案,而对于每个房间(非第一个)都有m-1个取 ...

  7. Luogu P2495 [SDOI2011]消耗战

    题目 我们可以很快的想到一个单次\(O(n)\)的dp. 然后我们注意到这个dp有很多无用的操作,比如一条没有关键点的链可以直接去掉. 所以我们可以尝试一次dp中只管那些有用的点. 题目给的关键点显然 ...

  8. foreach中的&用法

    原地址:https://blog.csdn.net/qq_38287952/article/details/79468321 例如,给数组添加一个新的元素. 这里的需求是统计商品收入,就可以用到&am ...

  9. IntelliJ IDEA 2017.3.2 热加载(Hot Swap)

    一.IntelliJ IDEA 自带热加载,修改代码后点击Ctrl + F9即可 缺点:1.Ctrl + F9只对当前类重新编译加载 2.只支持构造代码块的CRUD.方法体内代码修改.资源文件内容的修 ...

  10. SharePoint Resize app

    //Global Variables used in different functions. var widthSelected=null; var senderId; var hostUrl = ...