💗 💗 博客:小怡同学
💗 💗 个人简介:编程小萌新
💗 💗 如果博客对大家有用的话,请点赞关注加关注 🌞
什么是文件
磁盘上的文件是文件。
但是在程序设计中,我们一般谈的文件有两种。
程序文件:包括源程序文件(后缀为.c),目标文件(windows环境后缀为.obj),可执行程序(windows环境
后缀为.exe)。
数据文件:文件的内容不一定是程序,而是程序运行时读写的数据,比如程序运行需要从中读取数据的文件,或者输出内容的文件。
文本文件和二进制文件
根据数据的组织形式,数据文件被称为文本文件和二进制文件一个是在文件中以二进制形式储存
一个实在文件中以ASCII形式储存(数据以二进制储存,需要在存储前转换)
字符一率用ASCII形式存储,数值型两者都可
文件的打开和关闭
说到文件的打开关闭就离不开”文件类型指针——FILE pf“。文件在读写之前应该先打开文件,在使用结束之后应该关闭文件,在编写程序的时候,在打开文件的同时,都会返回一个FILE*的指针变量指向该文件,也相当于建立了指针和文件的关系。
ANSIC 规定使用fopen函数来打开文件,fclose来关闭文件
int fclose ( FILE * stream );//文件指针
FILE * fopen ( const char * filename, const char * mode );//文件指针,打开方式
打开方式常见有:
在了解文件的顺序和随机读写之前请看下张图
文件的顺序读写
内存中的数据通过流,可到目标输入设备
像是二进制输入 只适用于文件流,从文件导入到内存中,而不能从屏幕导入内存数据 //我是这样理解的
文件的随机读写
fseek
int fseek ( FILE * stream, long int offset, int origin )
作用 :调整steam所指向的文件 ,将origin 处位置 移动 offset
返回值:如果成功,函数返回零。否则,它返回非零值。
如果发生读取或写入错误,则会设置错误指示器( ferror )。
参数:第一个参数是文件指针 ,第二个是偏移量,第三个设定从文件的哪里开始偏移
可能取值为:SEEK_CUR、 SEEK_END 或 SEEK_SET
SEEK_SET: 文件开头
SEEK_CUR: 当前位置
SEEK_END: 文件结尾
ftell
long int ftell ( FILE * stream );
作用:返回文件指针相对于起始位置的偏移量
返回值:
成功时,返回位置指示器的当前值。
失败时,返回-1L,并将errno设置为系统特定的正值。
参数;是文件指针
rewind
void rewind ( FILE * stream )
作用:让文件指针的位置回到文件的起始位置
返回值:没有任何
参数:文件指针
文件读取结束的判定
在文件读取过程中,不能用feof函数的返回值直接用来判断文件的是否结束。
- 文本文件读取是否结束,判断返回值是否为 EOF ( fgetc ),或者 NULL ( fgets )
例如:
fgetc 判断是否为 EOF .
fgets 判断返回值是否为 NULL . - 二进制文件的读取结束判断,判断返回值是否小于实际要读的个数。
例如:
fread判断返回值是否小于实际要读的个数。
当读取失败后判断是什么原因结束的
须用ferror和feof函数来判定
ferror 检测文件读写过程中是否有产生错误,返回值是真 则文件结束而读取失败
feof检测读取文件是否错误