一、文件操作注意点:

1 打开文件时,如果打开方式加“+”,表示该文件可以“写” ;

2 退出程序一般用exit函数,正常退出参数为0,非正常退出参数为正零值 ;

3 文件的读写操作:按字符、字符串、格式、块 ;

4 fwrite和fread只有使用二进制方式,才可以读写任何类型的数据。最常用用于读写数组和结构体类型的数据

二、文件操作常用函数

1、FILE * fopen(const char * path,const char * mode)

参数path字符串包含欲打开的文件路径及文件名,参数mode字符串则代表着流形态 文件顺利打开后,指向该流的文件指针就会被返回。如果文件打开失败则返回NULL,并把错误代码存在errno 中

2、int fclose(FILE *stream)

关闭一个流,注意:使用fclose()函数就可以把缓冲区内最后剩余的数据输出到磁盘文件中,并释放文件指针和有关的缓冲区。 如果流成功关闭,fclose 返回 0,否则返回EOF(-1)。

3、int fputc (int n, File *fp)

fp为文件指针,它的值是执行fopen()打开文件时获得的。 n为输出的字符量。 虽然函数被定义为整形数,但仅用其低八位。 返回值:在正常调用情况下,函数返回读取字符的ASCII码值,出错时,返回EOF(-1)。当正确写入一个字符或一个字节的数据后,文件内部写指针会自动后移一个字节的位置。

4、int fgetc(FILE *stream)

fgetc()从参数stream所指的文件中读取一个字符,并把它作为一个字符返回。若读到文件尾或出现错误时,它就返回EOF,你必须通过ferror或feof来区分这两种情况

5、int fputs(char *str, FILE *fp)

参数: str是字符型指针,可以是字符串常量,或者存放字符串的数组首地址。 fp是文件型指针,通过打开文件函数fopen()获得的。 成功写入一个字符串后,文件的位置指针会自动后移,函数返回为一个非负整数;否则返回EOF(符号常量,其值为-1)。

6、char *fgets(char *buf, int bufsize, FILE *stream)

参数: *buf: 字符型指针,指向用来存储所得数据的地址。 bufsize: 整型数据,指明buf指向的字符数组的大小。 *stream: 文件结构体指针,将要读取的文件流。 文件结构体指针stream中读取数据,每次读取一行。读取的数据保存在buf指向的字符数组中,每次最多读取bufsize-1个字符(第bufsize个字符赋'\0'),如果文件中的该行,不足bufsize个字符,则读完该行就结束。函数成功将返回buf,失败或读到文件结尾返回NULL。因此我们不能直接通过fgets的返回值来判断函数是否是出错而终止的,应该借助feof函数或者ferror函数来判断。

7、int fprintf(FILE *stream,char *format,[argument])

fprintf()函数根据指定的format(格式)发送信息(参数)到由stream(流)指定的文件. fprintf()只能和printf()一样工作. fprintf()的返回值是输出的字符数,发生错误时返回一个负值.

8、 int fscanf(FILE *stream, char *format,[argument...])

从一个流中执行格式化输入,fscanf遇到空格和换行时结束,注意空格时也结束。这与fgets有区别,fgets遇到空格不结束

9、size_t fread ( void   *buffer,  size_t size,  size_t count,  FILE *stream)

从一个文件流中读数据,最多读取count个元素,每个元素size字节,如果调用成功返回实际读取到的元素个数,如果不成功返回 0。

参 数: buffer用于接收数据的内存地址,大小至少是size*count字节. size单个元素的大小,单位是字节 count元素的个数,每个元素是size字节. stream输入流 返回值:实际读取的元素个数.如果返回值与count不相同,则可能文件结尾或发生错误. 从ferror和feof获取错误信息或检测是否到达文件结尾.

10、size_t fwrite(const void* buffer, size_t size, size_t count, FILE* stream)

参 数: buffer:是一个指针,对fwrite来说,是要输出数据的地址; size:要写入内容的单字节数; count:要进行写入size字节的数据项的个数; stream:目标文件指针; 返回值:返回实际写入的数据块数目 注意: 1这个函数以二进制形式对文件进行操作,不局限于文本文件 2fseek对此函数有作用,但是fwrite函数写到用户空间缓冲区,并未同步到文件中,所以修改后要将内存与文件同步可以用fflush(FILE *fp)函数同步。

11、void rewind(FILE *stream)

同于 (void)fseek(stream, 0L, SEEK_SET) 将文件内部的位置指针重新指向一个流(数据流/文件)的开头

12、long ftell(FILE *stream)

返回当前文件位置,也就是说返回FILE指针当前位置,即退回指针指向文件指针当前指向的位置距离文件开头的字节数,否则返回-1L

13、int fseek(FILE *stream, long offset, int fromwhere)

如果执行成功,stream将指向以fromwhere(偏移起始位置:文件头0(SEEK_SET),当前位置1(SEEK_CUR),文件尾2(SEEK_END))为基准,偏移offset(指针偏移量)个字节的位置。如果执行失败(比如offset超过文件自身大小),则不改变stream指向的位置,并返回-1,并设置errno的值,可以用perror()函数输出错误

14、int feof(FILE *stream)

如果遇到文件结束标志EOF,函数feof(fp)的值为非零值,否则为0

c语言文件操作函数详解的更多相关文章

  1. C语言文件操作函数

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

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

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

  3. 【C语言】printf函数详解

    C语言printf函数详解 一.相关基础知识 请求printf()打印变量的指令取决于变量的类型,例如打印整数用%d符号,打印字符用%c符号,这些符号称为转换说明(conversion specifi ...

  4. day8文件操作作业详解

    1.day8题目 1,有如下文件,a1.txt,里面的内容为: 老男孩是最好的培训机构, 全心全意为学生服务, 只为学生未来,不为牟利. 我说的都是真的.哈哈 分别完成以下的功能: a,将原文件全部读 ...

  5. C-I/O操作函数详解

    EOF: End Of File, 文字流结尾, 这里的文字流可以是文件(file), 也可以是标准输入(stdin), 它的值在任何可能出现的字符之外(-1) 先列出三种基本类型操作函数 这里面返回 ...

  6. C语言文件操作函数之ferror & feof & clearerr

    这些函数都是和文件读写时发生错误有关,下面一一分析: 1:ferror 原型:int ferror(FILE * fp) 作用:测试一个文件流是否被设置了错误标识符,如果是返回非 0 整数,否则返回 ...

  7. OpenGL的glPushMatrix和glPopMatrix矩阵栈顶操作函数详解

    OpenGL中图形绘制后,往往需要一系列的变换来达到用户的目的,而这种变换实现的原理是又通过矩阵进行操作的.opengl中的变换一般包括视图变换.模型变换.投影变换等,在每次变换后,opengl将会呈 ...

  8. (转) unity 在移动平台中,文件操作路径详解

    http://www.unitymanual.com/thread-23491-1-1.html 今天,这篇文章其实是个老生常谈的问题咯,在网上类似的文章也比比皆是,在此我只是做个详细总结方便大家能够 ...

  9. C语言文件操作函数大全

    http://blog.csdn.net/mu0206mu/article/details/18980913 clearerr(清除文件流的错误旗标) 相关函数 feof表头文件 #include&l ...

随机推荐

  1. eclipse按Crl+鼠标左键,找不到源文件的解决办法。

    这种情况一般发生在tomcat的之中,原因是缺少类的源文件.在jdk中很少见,jdk中自带类的源文件,配置jdk的时候就已经将其加载进来了.而tomcat之中没有带类的源文件,需要自己去网上单独下载. ...

  2. Android(java)学习笔记99:android的短信发送器研究

    1.第一种可以调用系统内部的短信程序. 之前我曾经出现过一个bug就是报错: android.content.ActivityNotFoundException: No Activity found ...

  3. POWER DESIGN

    一.概念数据模型概述数据模型是现实世界中数据特征的抽象.数据模型应该满足三个方面的要求:1)能够比较真实地模拟现实世界2)容易为人所理解3)便于计算机实现 概念数据模型也称信息模型,它以实体-联系(E ...

  4. 关于Java多态的总结.

    [圣思源笔记]JAVA SE Lesson 11. 类是一种抽象的概念,对象是类的一种具体表示形式,是具体的概念.先有类,然后由类来生成对象(Object).对象又叫做实例(Instance).2. ...

  5. Spring 简单入门实例

    首先新建一个Web 项目 导入相应Jar 包 <?xml version="1.0" encoding="UTF-8"?> <beans xm ...

  6. HTTP状态码解读

    1xx:信息 消息 描述 100 Continue 服务器仅接收到部分请求,但是一旦服务器并没有拒绝该请求,客户端应该继续发送其余的请求. 101 Switching Protocols 服务器转换协 ...

  7. Unity3d发布错误:could not allocate memery:system out of memery!

    可能出现的原因: 1.项目太大了2.项目坏了3.资源坏了4.单个资源定点数超了e.   解决办法:删除了一些模型.是模型太大,面数.顶点数太多的原因.   Unity3d里查看模型的顶点数 展开fbx ...

  8. request常用方法小结

    HttpServletRequest对象代表客户端的请求,当客户端通过HTTP协议访问服务器时,HTTP请求头中的所有信息都封装在这个对象中,开发人员通过这个对象的方法,可以获得客户这些信息. req ...

  9. Chrome 控制台不完全指南【转载】

    Chrome的开发者工具已经强大到没朋友的地步了,特别是其功能丰富界面友好的console,使用得当可以有如下功效: 更高「逼格」更快「开发调试」更强「进阶级的Frontender」 Bug无处遁形「 ...

  10. 动态执行C#代码

    using System; using System.CodeDom.Compiler;using System.Collections.Generic;using System.Linq;using ...