C语言:文件操作
创始人
2024-05-14 22:07:23
0

文件:储存数据

文件:程序文件:(.c.obj.exe)

数据文件:运行时的数据或内容

文件名:文件路径+文件名主干+文件后缀

c:\code\test.txt

文件指针:

每个被使用的文件都在内存中开辟了一个相应的文件信息区,用来存放文件相关信息(文件名字,文件状态以及当前位置),信息是被保存在结构体FILE的变量中,一个文件一个变量。

通过FILE来维护变量

打开文件:

FILE*pf=fopen("D:\\code\\test.txt","r");//打开文件模式是只读,返回FILE指针,指针指向开辟的结构体FILE变量
//打开失败返回空指针
FILE*pf=fopen("test.txt","r");//相对路径:和源文件在同一目录
FILE*pf=fopen("..\test.txt","r");//在源文件上一级目录
fclose(pf);//关闭文件,参数是FILE*指针
"r":只读
"w":清空原来的文件,并写入
"a":追加文件

文件顺序读写:

fputc:

FILE*pf=fopen("D:\\code\\test.txt","w");
fputc('a',pf);
//按顺序写入

fgetc:返回读到的字符的assic码值,读取失败返回EOF

FILE*pf=fopen("D:\\code\\test.txt","r");
int ch=fgetc(pf);
printf("%c",ch);
//fputc和fgetc是逐个字符读写

fputs:

FILE*pf=fopen("D:\\code\\test.txt","w");//使文件可读
fputs('ahlgaglj\n',pf);
//写入ahlgaglj并换行

fgets:

FILE*pf=fopen("D:\\code\\test.txt","r");
int ch[20]={0};
fputs(ch,5,pf);//读取4个字符并放入ch中,并补上

fprintf:

FILE*pf=fopen("D:\\code\\test.txt","w");
int a=0;
int b=0;
fprintf(pf,"%d%d",a,b);//除了多了指针作为第一个参数其他和printf一样

fscanf:

FILE*pf=fopen("D:\\code\\test.txt","r");
fscanf(pf,"%d%d",&a,&b);//从文件中读取数据

fprintf和fscanf:相当于与程序操作的主体由人变成了文件

流:数据输入到流再输出可以对不同对象:屏幕,文件,网络。流就是FILE的结构体

任何一个c语言程序运行默认打开三个流:stdin-标准输入(键盘)FILE*

stdout-标准输出 (屏幕) FILE*

stderr-标准错误  (屏幕) FILE*

不含文件流,所以要手动打开fopen

以上适应所有的流:如fgetc()可以放文件流 标准输出流 :即fgetc()可以从文件中获取字符也可以从屏幕上

printf()scanf()只能用标准输入输出流

二进制输入输出:只能文件流

fwrite:以二进制来写

FILE*pf=fopen("D:\\code\\test.txt","wb");//二进制读写
int a=4;
fwrite(&a,sizeof(a),1,pf);
//要写的数据的地址,写入字符的大小,写入数量,目标指针
fread(&a,sizeof(a),1,pf)
//读到的数据放入地址,读取数据的大小,读入的数量,

函数scanf/fscanf/sscanf比较:

printf/fprintf/sprintf同理

scanf针对标准输入流 fscanf针对所有输入流

sscanf:从一个字符串中还原成一个格式化数据

sscanf(buf,”%d”,&a);
从字符串指向的内容 输入到a变量中

文件随机读写:

fseek:偏移指针

向左偏移,为负,向右为正 

fseek(pf,1,SEEK_SET);
//指针,偏移量,偏移起始位置
//SEEK_SET:表示当前位置
//每次用fgetc等函数时,指针会自动偏移到下一个字符

ftell:告诉相对于起始位置的偏移量

ftell(pf);

rewind:使指针返回起始位置

rewind(pf);

数据在内存中以二进制存储,把二进制数据存到文件中就是二进制文件

如果转换为assic码值再存到文件中,就是文本文件。

如果是小端形式,那么也会以小端存到文件中

文件读取结束判定:

文本文件:

fgetc:

返回空指针:读取失败而导致读取结束

返回EOF:读到文件为尾而结束

feof:已结束时,判断结束原因是返回假:读取失败结束,还是返回真文件尾结束

返回空指针:读取失败而导致读取结束

返回EOF:读到文件为尾而结束

二进制文件判断:

返回值是否小于实际读取个数

文件缓存区:

系统为内存中为使用的文件开辟文件缓存区,从

相关内容

热门资讯

监控摄像头接入GB28181平... 流程简介将监控摄像头的视频在网站和APP中直播,要解决的几个问题是:1&...
Windows10添加群晖磁盘... 在使用群晖NAS时,我们需要通过本地映射的方式把NAS映射成本地的一块磁盘使用。 通过...
protocol buffer... 目录 目录 什么是protocol buffer 1.protobuf 1.1安装  1.2使用...
在Word、WPS中插入AxM... 引言 我最近需要写一些文章,在排版时发现AxMath插入的公式竟然会导致行间距异常&#...
【PdgCntEditor】解... 一、问题背景 大部分的图书对应的PDF,目录中的页码并非PDF中直接索引的页码...
Fluent中创建监测点 1 概述某些仿真问题,需要创建监测点,用于获取空间定点的数据࿰...
educoder数据结构与算法...                                                   ...
MySQL下载和安装(Wind... 前言:刚换了一台电脑,里面所有东西都需要重新配置,习惯了所...
修复 爱普生 EPSON L4... L4151 L4153 L4156 L4158 L4163 L4165 L4166 L4168 L4...
MFC文件操作  MFC提供了一个文件操作的基类CFile,这个类提供了一个没有缓存的二进制格式的磁盘...