本文对C语言操作文件部分充分演示了(具体看文章目录),基本的函数操作都用最简单的方式去展示,先看代码再看总结。
看懂文章要求懂结构体
以下内容如果读者不喜欢,您也可以按照这个目录去学习(是完整目录了),下面是学习C语言操作文件章节需要掌握的内容
文章目录
一、文件的概述
操作系统以文件为单位对数据进行管理,输入输出是数据传送的过程,数据如流水一般,从某个位置流到另外一个位置,又从另外一个位置流过来,所以把输入和输出称为一种流,输入输出流
数据文件分为二进制文件和ASCII文件,ASCII文件是一种文本文件
下面是形象的比喻
ASCII文件可以用文本软件来读取,但是二进制文件一般不可以正常打开,要专用一定的软件或插件转化为显示010101数字的文本可以使其看到010101或者转为汇编语言等(.bin后缀的或者我们常看到的.jpg .doc .mp3等)
二、文件的类型指针
文件类型指针,其实是指向一个结构体的指针,这个结构体是FILE结构体,熟悉结构体就会很容易看懂
struct _iobuf {
char *_ptr; //文件输入的下一个位置
int _cnt; //当前缓冲区的相对位置
char *_base; //指基础位置(应该是文件的其始位置)
int _flag; //文件标志
int _file; //文件的有效性验证
int _charbuf; //检查缓冲区状况,如果无缓冲区则不读取
int _bufsiz; //文件的大小
char *_tmpfname; //临时文件名
};
typedef struct _iobuf FILE;
FILE *fp;//这是定义了一个结构体指针变量,指向了某一个文件结构体变量
//从而通过该结构体变量中的文件信息能够访问该文件
三、文件的打开与关闭(fopen 和 fclose)
1.文件的使用方式
操作文件时,这个fopen和fclose是必须的使用的,下面介绍到的操作都基于您已经fopen流和文件建立关联才可以
int main(){
fopen函数('这个是文件地址','这是文件使用方式(上图)');
FILE *fp = fopen("demo.txt","r");
fclose(fp);
}
在文件打开文件后,文件默认最后一个是“EOF”为结束符(end of file)
关闭函数fclose成功返回0,否则返回EOF(-1)
四、文件的读写
1.字符读写(fgetc 和 fputc)–ASCII类型读写
字符读写大白话就是一个字符一个字符的读,和一个字符一个字符的写
#include <stdio.h>
#include <stdlib.h>
int main(){
//fputc函数完成了后指针就会自动移到下一个位置让下面的程序继续执行
FILE *fp = fopen("demo.txt","r+");
fputc('a',fp);//完成后指针默认移到下一个位置
printf("%X\n",fp->_ptr);//1969F1 代表现在在1969F0 结构体提供的查询下一个位置的变量
fputc('b',fp);// +1
printf("%X\n",fp->_ptr);//1969F2 代表现在在1969F1这个位置
fputc('c',fp);// +1 现在在1969F2的位置
rewind(fp); //这个函数用于复位,把指针位置重置到文件开头,这个函数没有返回值(六、本文文件定位与操作中讲到)
printf("%X\n",fp