一、文件操作注意点:

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. 玩转Android之手摸手教你DIY一个抢红包神器!

    AccessibilityService是Google专门为残障人士设计的一个服务,可以让他们更方便的来操作手机.AccessibilityService一个主要功能是通过监听窗口的变化来判断用户当前 ...

  2. Android进阶笔记08:Android 中Activity、Window和View之间的关系

    1. Android 中Activity.Window和View之间的关系(比喻): Activity像一个工匠(控制单元),Window像窗户(承载模型),View像窗花(显示视图) LayoutI ...

  3. ie6双边距bug及其解决办法

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  4. linux-rm

    rm可以删除文件夹和文件 rm -rf强制删除不询问 rm /*    自杀绝技,赶紧跑吧 mkdir -p创建父目录 mkdir -p /tmp/wsb/dgl(wsb这个文件夹之前没有) rmdi ...

  5. Scala的基本语法总结

    Scala的函数: 目前博客园中的代码编辑器中还不支持Scala语言....用的Java代码的存储方式 object TestScala { def main(args: Array[String]) ...

  6. Sublime text3 安装

    Sublime是一款跨平台的前端开发神器,国外的一款共享软件,虽然是未注册的但不影响使用. 一.下载最新版的安装包 官网地址:http://www.sublimetext.com/3 --portab ...

  7. c# 与 PHP中 SHA1加密结果不同解决方法

    那天在调试API的时候,发现用c#写的SHA1加密出来的结果和PHP中sha1()出来的不一样,找了半天的原因后来才弄出来 在调试微信接口的时候大多的帮助文档都是提供的是PHP的方法,所以在.net中 ...

  8. MyBatis(3.2.3) - Cache

    Caching data that is loaded from the database is a common requirement for many applications to impro ...

  9. Nginx - HTTP Configuration, Module Variables

    The HTTP Core module introduces a large set of variables that you can use within the value of direct ...

  10. android 中int 和 String 互相转换的多种方法

    1 .如何将字串 String 转换成整数 int? A. 有两个方法: 1). int i = Integer.parseInt([String]); 或 i = Integer.parseInt( ...