分享一些我在学习C语言文件时学习到的知识点。

文件
概念:
文件是存储在外部存储介质上(如磁盘)的数据的集合。
文件有俩大类:第一类是程序文件(源文件.c  目标程序文件.obj  可执行文件.exe);第二类是数据文件(文件里是输入输出数据,如文本文件,图像文件,声音文件)

数据文件分类:
按数据存储的编码形式,数据文件可分为文本文件和二进制文件两种。文本文件是以字符ASCII码值进行存储与编码的文件,其文件的内容就是字符。二进制文件是存储二进制数据的文件,按字节来存储。
(C语言源程序是文本文件,C程序的目标文件和可执行文件是二进制文件。)

缓冲文件系统
进行文件操作时,系统为每一个文件分配一块文件内存缓冲区(内存单元,一个磁盘扇区大小,512B),先把磁盘读出的数据放在缓存区,计算机在直接从缓冲区中取数据,等缓冲区的数据取完后再去磁盘中读取。这样可以减少磁盘的读写次数,再加上计算机对缓冲区的操作大大快于对磁盘的操作,故应用缓冲区可大大提高计算机的运行速度.

文件类型指针:FILE *fp
文件操作具有顺序性特点,前一个数据读取后,下一次将顺序读取后一个数据(文件内部位置指针后移一位)

fopen
fp=fopen("文件名","文件打开方式")
文件名如果不指定文件路径,默认与当前应用程序当前路径相同

判断文件是否正常打开:
if((fp=fopen("abc.txt","r"))==NULL)
{
printf("File open error");
exit(0);
}

文件打开方式:
r:打开文本文件进行只读
w:建立新文本文件进行只写
a:打开文本文件进行追加
r+:打开文本文件进行读/写
w+:建立新文本文件进行读/写
a+:打开文本文件进行读/写/追加
rb:打开二进制文件进行只读
wb:建立新二进制文件进行只写
ab:打开二进制进行追加
rb+:打开二进制文件进行读/写
wb+:建立新二进制文件进行读/写
ab+:打开二进制文件进行读/写/追加

读文件,文件必须存在,否则出错
写文件:
如果文件不存在,新建文件;
如果存在,w将原文件删除然后重新建立,a写入数据添加在文件原数据后面,不删去原文件内容

fclose
fclose(文件指针);文件关闭返回0
判断文件是否正常关闭:
if(fclose(fp))
{
printf("can not close the file");
exit(0);

文件字符方式读写函数fgetc()和fputc
ch=fgetc(fp)
fputc(ch,fp)
打开文件时fp指针指向文件首部,fgetc()函数在读到有效字符时,会向后移动指针,若读到文件末尾,则会读到一个无效的字符,返回EOF

EOF(^z、ctrl+z):
文件结束符,它不是常规的ASCII码,而是一个值为-1常量,读文件时通过判断文件读入字符是否为eof来决定循环是否继续
只是为了标识已经读到文件末尾,它并不是一个存储在文件中的字节

文件末尾检测函数feof()
feof(fp),函数返回1表示到了文件结束位置,0表示文件未结束。任何文件都能判断是否结尾
feof通过  已读  的字符是不是合法字符来判断是否到了文件末尾,判断的是已读取的字符(feof使用前,必须有文件读函数fgetc,fread,才能有意义)

判断文件是否结尾:
文本文件:
ch=getchar(fp);
while(ch!=EOF)
ch=getchar(fp)
或者
ch=getchar(fp);
while(!feof(fp))
ch=getchar(fp)
二进制文件:ch=getchar(fp);
while(!feof(fp))
ch=getchar(fp)

文件字符串读写函数fputs()和fgets()
fputs(s,fp)
s是字符串地址,fp是文件指针
fgets(s,n,fp)
s是字符数组名或字符指针。从文件fp读取字符串(最多n-1个字符)到s里

格式化方式文件读写函数fscanf()和fprintf()
fscanf(文件指针,格式字符串,输入表)
fprintf(文件指针,格式字符串,输出表)
例:fscanf(fp,"%d%f",&n,&x);fprintf(fp,"%d%f",n,x);

数据块方式文件读写函数fread()和fwrite()
(多用于二进制文件。数据块是一组数据,如数组,结构变量)
fread(buffer,size,count,fp)
fwrite(buffer,size,count,fp)
buffer是指针,输入输出数据的地址
size是数据块字节数,即数据块大小(sizeof)
count是数据块数
例:struct sysuser u[5],*pu=u;
fwrite(pu,sizeof(struct sysuser),5,fp);

重定位文件首函数rewind()
定位文件读写位置指针 指向文件首地址
rewind(fp)

指针移动控制函数fseek()
fseek(fp,offset,from)
fp是文件指针
offset表示移动偏移量(常用到sizeof,如sizeof(struct data),也可是常量,如20L为20个字节),正值表示从当前位置向后计算,负值为向前计算。
from表示从哪里计算偏移量(0为文件首部,1为当前位置,2为文件末尾)

获取指针当前位置函数ftell()
返回值是相对于文件开头的位移量(字节数)
例:end=ftell(fp)

读写错误检查函数ferror()
检查文件在各种输入输出函数进行读写时是否出错,返回0未出错,否则有错
ferror(文件指针)

出错标记清除函数clearerr()
清除出错标志和文件结束标志,使他们为0值
clearerr(文件指针)

关于C语言“文件”的知识点相关推荐

  1. c语言 - 文件操作知识点总结

    (目录因为排版出了点问题不能准确移动到对应位置就不弄了) 1.什么是文件,为什么要使用文件 使用文件的原因: 我们在运行程序的时候,产生的数据是存放在内存中的,当程序退出时,内存中的数据就不存在了,当 ...

  2. 二级c语言会考文件打开,2017计算机二级C语言文件知识点

    2017计算机二级C语言文件知识点 引导语:C语言是一种计算机程序设计语言,它既具有高级语言的特点,又具有汇编语言的特点.以下是百分网小编分享给大家的'2017计算机二级C语言文件知识点,欢迎阅读! ...

  3. 大一上学期C语言不熟知识点学习总结

    大一上学期C语言不熟知识点学习总结通过前几章对顺序结构程序设计程序.if选择结构.switch语句.循环结构.数组.函数的学习,这一次我将主要针对几种不熟悉的知识点及题型进行分析. 一. 增1和减1运 ...

  4. C语言----文件存储

    1. 需要了解的概念 需要理解的知识点包括:数据流.缓冲区.文件类型.文件存取方式 1.1 数据流: 指程序与数据的交互是以流的形式进行的.进行C语言文件的存取时,都会先进行"打开文件&qu ...

  5. c语言文件构建步骤,C语言文件的创建与建立

    C语言文件的创建与建立 c语言中对于文件的创建与建立已经有相当经典且应用相当广泛的语法了.下面是小编为大家带来的C语言文件的创建与建立的知识,欢迎阅读. 首先是文件的创建: # include # i ...

  6. C语言考研复试知识点整理

    C语言考研复试知识点整理 1.由float x=3e-6,y=3e-6;不能得到x= =y的逻辑值为真. 解析:float类型的变量只能进行>或<运算,不能进行==运算 2.自增和自减运算 ...

  7. c语言生成随机坐标,C语言 文件的随机读写详解及示例代码

    前面介绍的文件读写函数都是顺序读写,即读写文件只能从头开始,依次读写各个数据.但在实际开发中经常需要读写文件的中间部分,要解决这个问题,就得先移动文件内部的位置指针,再进行读写.这种读写方式称为随机读 ...

  8. c语言文件可用代码存放,C语言 文件(示例代码)

    小白一个,看到有错误,希望指出,万分感谢 /**************************************************************** C语言文件概述: 一般文件 ...

  9. C语言文件操作解析(二)【转载】

    http://www.cnblogs.com/dolphin0520/archive/2011/10/05/2199598.html C语言文件操作解析(二) C语言中对文件进行操作必须首先打开文件, ...

最新文章

  1. PHP 读取数据库内容并以二维数组按指定列输出实例
  2. CSS布局代码:两列布局实例
  3. 使用.Net平台构建企业应用系统场(下)
  4. App Store应用脱壳
  5. app中传递java数据_Java实现app接口和Socket消息传递(6)servlet映射并返回Json数据
  6. django 如何写model
  7. java学生信息管理系统代码_java学生信息管理系统源代码
  8. spss 为何打不开
  9. matlab环境下图像分形维数的计算,MATLAB环境下图像分形维数的计算_杨书申
  10. 中国计算机软件专业技术资格和水平考试各地咨询地址和报名时间
  11. 实现网站流量统计(监控网站流量)
  12. 【2019年04月10日】股票的滚动市盈率PE最低排名
  13. qt.network.monitor: Could not get the INetworkConnection instance for the adapter GUID.QT关闭时程序异常结束
  14. javaweb基于SSM开发房屋租赁管理系统(房东 租客两种用户) 课程设计 大作业源码 毕业设计
  15. WD_考研计算机C语言基础002【统考中的C语言】
  16. PS案例实战,从基础到精通 淘宝美工/海报制作/人物精修-姜浩-专题视频课程
  17. 搭建Mantis 缺陷管理系统
  18. 对企业数字化转型的思考
  19. 【mud】npc对话函数与自动对话匹配(gongsun.c)
  20. UE4中部分物理概念的单位

热门文章

  1. 构建创客教育空间理念的雏形
  2. 帮一个朋友解决了 sysfader。。。cannot read...ie crash问题。。
  3. android顶部微信搜索,微信顶部栏有两个搜索栏
  4. T3服务器IP地址去哪里修改,用友t3服务器ip地址修改
  5. java使用pd4ml实现html文件转pdf
  6. error LNK2005: int dir (?dir@@3HA) already defined in GameStart.obj
  7. 考拉海购技术支持的前世今生
  8. 会考access数据库操作题_信息技术学业水平考试操作题必备!!!
  9. 花了30天才肝出来,史上最全面Java设计模式总结,看完再也不会忘
  10. 2022年淘宝618跨店满减是多少? 天猫618跨店满减规则