文件的打开与关闭

首先要定义一个文件指针类型,格式为 FILE *文件指针名; ;

FILE *fp;  //fp就是定义的文件指针

●打开文件fopen()函数,格式: fp = fopen("文件名", "打开方式");

fp = fopen("c:\\myfile", "r");  //打开方式下文会讲到

文件名中不允许直接使用路径描述符 "\",必须用转义字符的形式 "\\"。"\\" 中第一个 "\" 是转义字符,第二个表示路径描述符。

●关闭文件fcolse()函数,格式: fclose(文件指针);

fclose(fp);

功能:正常完成关闭文件操作时fclose返回0,否则返回EOF(值为-1),表示有错误发生。

●打开文件的方式:

共有12种,由r(read), w(write), a(append), b(binary), +(read/write)五个字符组合而成。

"r", "w", "a", "r+", "w+", "a+"  :这六种打开文本文件

"rb", "wb", "ab", "rb+", "wb+", "ab+"  :这六种打开二进制文件

"r" 打开一个文本文件,可以读取文件
"w" 打开一个文本文件,可以写入文件,先将文件的长度截为0。如果该文件不存在则先创建
 "a" 打开一个文本文件,可以写入文件,向已有文件的尾部追加内容,如果该文件不存在则先创建
"r+" 打开一个文本文件,可以进行更新(读取和写入),也即可以读取和写入文件
"w+" 打开一个文本文件,可以进行更新(读取和写入),如果该文件存在则首先将其长度截为0,如果该文件不存在则先创建
"a+" 打开一个文本文件,可以进行更新(读取和写入),向已有文件的尾部追加内容,如果该文件不存在则先创建;可以读取整个文件,但写入时只能追加内容。
"rb", "wb", "ab", "rb+", "wb+", "ab+", "r+b", "w+b", "a+b" 与前面的模式相似,只是使用二进制而非文本模式打开文件

注意:如果用"w"模式打开任意一个文件,文件内容将删除,以便程序以一个空文件开始操作。

●文件结束的判定feof()函数,格式: feof(文件指针)

这里举一个例子帮助理解:

while(!feof(fp))   //我们已在文件的末尾加上结束标志-1
{   c = fgetc(fp); print("当到文件尾时,此段文字不显示");
}
//此段程序的含义是:当为!feof(fp)为1,从当前位置读入一个字节的数据赋给字符型变量c,指当遇到文件结束标志时,feof(fp)的值为1,feof(fp)为0,循环结束

feof()函数功能:测试文件指针所指向的文锦啊内部读写位置指针是否到达文件尾。当文件结束时返回1,否则返回0。

文件的读写

1.字符,字符串的读写

写字符函数fputc,功能:把一个字符写入此盘文件中,若输出成功,则返回输出的字符,否则返回EOF。格式:

fputc(ch, fp);   //将字符ch的值输出到fp所指向的文件中

ch:要输出的字符,可以是字符常量,也可以是字符变量。

读字符函数fgetc,功能:从指定文件读入一个字符,该文件必须是以读或读写方式打开的,若读取成功返回读取的字符,否则返回EOF。格式:

ch = fgetc(fp);  //读取成功返回字符赋值给ch

写字符串函数fputs,格式: fputs("字符串", 文件指针);     功能:向指定的文件写入一串字符,写入成功返回0,否则返回非0值。

fputs("Welcome to my blog", fp);

注意:fputs函数将写入文件的字符串中的空字符去掉,ptus函数将空字符换成换行字符输出。

读字符串函数,格式: fgets(字符串, n, fp);      功能:从fp指向的文件读入n-1个字符存放第一个参数中,如果遇到换行符或EOF,则结束。

fgets(str, n, fp); //str 为字符数组。从fp指向的文件读入n-1个字符存放到str数组中

注意:读入字符串后在最后加一个 '\0' 字符,fgets函数返回的返回值为字符串的首地址。

2.数据块的读写

数据块写文件函数fwrite(),格式:

fwrite(buffer, size, count, fp);

buffer:是一个指针,用来指出带输出数据的地址。

size:每次要写的字节数

count:写入多少个size大小的数据项

注意:完成写操作(fwrite())后必须关闭文件(fclose())

数据块的读文件函数fread(),格式:

fread(buffer, size, count, fp);

count:读入多少个size大小的数据项

3.格式化读/写文件函数

读文件fprintf(),格式: fprintf(文件指针,"格式控制",输出列表);

fprintf(fp,"%d, %d",a, b);  //将a,b写入fp指向的文件中

注意:fprintf()函数总是将输出项在内存中的表示形式按指定的格式转换成字符串形式,再写入到指定的文件中。

写文件fscanf(),格式: fscanf(文件指针,"格式控制",地址列表);

fprintf(fp,"%d, %d",&a, &b);  //将fp指向的文件中的数据读出并存放于a,b

注意:fscanf()函数从文件中读出的数据一定是按字符串形式(文本形式)存在的。

文件定位

●rewind()函数,格式: rewind(文件指针);     功能:使文件指针的读写位置重新返回到文件的开头。
rewind(fp);

●fseek()函数,格式: fseek(文件指针, 位移量w, 起始点s);     功能:使文件指针移到距起始点偏移w个字节处。

fseek(fp, 2, 0);  //使文件指针移到距起始点0偏移2个字节数

w:当w为正数时表示向文件尾方向移动,为负数时表示向文件头移动,为0表示不移动。

s:可以为0,1,2;s=0表示文件头,s=0表示当前位置,s=0表示文件末尾。
●ftell()函数,格式: ftell(文件指针);     功能:得到流式文件中的当前位置,用相对与文件开头的位移量来表示。若ftell()函数返回-1L表示出错。 
i = ftell(fp); //存放当前位置给变量i
if(i == -1L)printf("error\n"); //若调用的函数出错(如不存在此文件),则输出ERROR

文件的检测

常用的文件检测函数有两个 ferror()和clearerr()
ferror()函数,功能:若ferror()函数的返回值为0,则表示未出错,非0表示出错。格式:
ferror(fp)

clearerr()函数,功能:使文件错误标志和文件结束标志置为0。格式:

clearerr(fp)

20170104完

转载于:https://www.cnblogs.com/libra-yong/p/6250133.html

【c基础】之 文件及其操作相关推荐

  1. Linux基础(6)--文件IO操作

    文件IO操作 1. open打开操作 2. close关闭操作 3. creat创建操作 4. write写操作 5. read读操作 Linux下一切皆文件,所以文件IO是很重要的也是很基础的操作. ...

  2. python 基础之文件读操作

    创建一个名为'尘曦'的文件内容如下 Hadoop是一个由Apache基金会所开发的分布式系统基础架构. 用户可以在不了解分布式底层细节的情况下,开发分布式程序.充分利用集群的威力进行高速运算和存储. ...

  3. Python基础灬文件常用操作

    文件常用操作 文件内建函数和方法 open() :打开文件 read():输入 readline():输入一行 seek():文件内移动 write():输出 close():关闭文件 写文件writ ...

  4. python文件对象提供了3个读方法、分别是-python3基础之文件对象操作

    1.向文本文件中写入内容 s = 'Hello world 文本文件的读取方法 文本文件的写入方法 ' # 需要写入文件的字符串 print('显示需要写入的内容: {0:s}'.format(s)) ...

  5. Python学习入门基础:文件读写操作、模块和包、异常

    一.文件 文件的概念 文件的基本操作 文件/文件夹的常用操作 文本文件的编码方式 很多人学习python,不知道从何学起. 很多人学习python,掌握了基本语法过后,不知道在哪里寻找案例上手. 很多 ...

  6. Python基础:文件的操作

    一.python可以在不导入任何模块的情况下对文件完成读.写.追加,替换(稍复杂). 二.打开文件: 1.f = open('text.txt') 这种方式打开,操作完后需要使用f.colse()关闭 ...

  7. Python 基础 CSV文件的操作

    1.CSV文件的打开 CSV文件可以使用open命令打开,但是一定要用close命令关闭. 也可以用with语句打开,操作结束后,自动关闭. with open(文件路径字符串,模式字符) as 文件 ...

  8. python基础语法-对文件的操作

    这里简单介绍基础的文件操作,基础的文件夹操作见:https://blog.csdn.net/zhouchen1998/article/details/81503819 对文件的操作对于数据的永久存储起 ...

  9. C语言——基础的文件处理

    ok,上期我们学完了链表,这期我们来学文件处理.其实你可能一直在接触文件处理,但是可能不知道到底什么是文件处理.比如说啊,你在HDUOJ提交了一份代码,那么OJ就会拿测试案例给你的代码运行对吧?那么, ...

  10. python文件替换一行_python基础_文件操作实现全文或单行替换的方法

    这篇文章主要介绍了关于python基础_文件操作实现全文或单行替换的方法,有着一定的参考价值,现在分享给大家,有需要的朋友可以参考一下 python修改文件时,使用w模式会将原本的文件清空/覆盖.可以 ...

最新文章

  1. debian编译安装python_编译安装python2.7及相关模块(debian5.0.1)
  2. python画二维散点图-python3怎样画二维点图
  3. vue_组件_非prop特性
  4. ENode 2.8 最新架构图简介
  5. 【BZOJ1831】[AHOI2008]逆序对(动态规划)
  6. 福州公交车与拖拉机相撞1人死亡
  7. 一个三十岁男人的婚姻思考
  8. 从.NET Core 3.1项目生成本地可执行文件
  9. 按clear按钮清空两个文本框的内容,按copy按钮时将Source文本框的内容复制到Target文本框,按close按钮结束程序的运行
  10. (Zotero)开源的文献管理器 真香
  11. 路由:vue-router
  12. UI设计师(界面设计)面试题
  13. PS长阴影生成工具 Long_Shadow_Generator_v1.2_for_CS6.zxp
  14. java Web中实现QQ邮箱验证以及验证码注册用户
  15. 百度地图API的IP定位城市和浏览器定位
  16. 如何用圆弧插补法画一个圆
  17. L3 利用集中和发散思维
  18. 管中窥豹之淘宝大数据平台
  19. “眼界大开 声临其境”网易首届音视频技术大会圆满落幕
  20. 联想笔记本无法识别USB(通用串行总线(USB)的控制器问题)

热门文章

  1. IE8下submit表单没反应
  2. 如何使用PHP自动备份数据库
  3. LeetCode 79 Word Search(单词查找)
  4. 关于自适应宽度圆角的最简单的解决办法
  5. 关于报表在移动端展现需你需要知道哪些?
  6. vue-electron 写一个markdown文章编辑器(一)
  7. iOS开发-iPad侧边栏Tab选项卡切换
  8. 【转】两种方法教你在Ubuntu下轻松关闭触摸板(TinkPad)
  9. bzoj1597[Usaco2008 Mar]土地购买
  10. Android Studio 如何打JAR包