当前位置:网站首页>文件基础知识
文件基础知识
2022-07-25 18:06:00 【刀剑侠客】
文件有关知识
文件的分类
- 程序文件:像
.c为后缀的源文件,.obj为后缀的目标文件,.exe为后缀的可执行程序。 - 数据文件:程序读写时的数据。
或者按照另外一种分类方式
文件分为:1. 文本文件。2. 二进制文件。
数据在内存中就是以二进制的形式储存的,不加转换直接输出到外存中,就是二进制文件;要是加了转换,以ASCII标准存储就是文本文件。
数据文件
文件名:一个文件所拥有的唯一的标识。
包括:文件路径,文件名主干,文件后缀
文件的打开与关闭
- 文件指针
文件指针其实是一个结构体变量名FILE,里面的成员是用来存放文件的相关信息的。这些信息共同组成了每个不同文件的文件信息区。
每次打开文件的时候,系统会创建不同的FILE,通过FILE*创建一个变量pf,这里的pf就是一个文件指针,能够指向对应的文件。
- 文件的打开及关闭
文件在进行读写操作前,应该打开文件;当有关操作结束之后,应该关闭文件。
标准规定使用fopen来打开文件,用fclose来关闭文件。
fopen
FILE* fopen(const char* filename, const char* mode);
文件成功打开时,返回的是指向特定文件信息区的结构体指针;打开失败返回的是空指针,所以,在使用文件的时候,得要进行判断。
一些重要的文件的打开方式
| 文件的打开方式 | 具体意义 | 文件不存在 |
|---|---|---|
| “r” | 为了输入数据打开文件 | 报错 |
| “w” | 为了输出数据打开文件 | 创建一个新文件 |
| “rb” | 为了输入数据,打开一个二进制文件 | 报错 |
| “wb” | 为了输出数据,打开一个二进制文件 | 创建一个新文件 |
fclose
int fclose(FILE* stream);
举例
#include <stdio.h>
#include <string.h>
#include <errno.h>
int main()
{
FILE* pf = fopen("test.txt", "w");
if (pf == NULL)
{
printf("%s\n", strerror(errno));
return;
}
//文件相关操作
//...
fclose(pf);
return 0;
}
文件的顺序读写
| 功能 | 函数名 | 使用范围 |
|---|---|---|
| 字符输入 | fgetc | 所有输入流 |
| 字符输出 | fputc | 所有输入流 |
| 文本输入 | fgets | 所有输入流 |
| 文本输出 | fputs | 所有输入流 |
| 格式化输入 | fscanf | 所有输入流 |
| 格式化输出 | fprintf | 所有输入流 |
| 二进制输入 | fread | 文件 |
| 二进制输出 | fwrite | 文件 |
文件的随机读写
fseek
int fseek(FILE* stream, long offset, int origin);
该函数有3个参数,第一个是一个文件指针,第二个是偏移量,第三个是起始位置。
起始位置要是第一个元素则为0,最后一个元素则为-1。
通过这3个参数可以定位到文件的相关位置,进行读写操作。
ftell
long ftell(FILE* stream);
要是该函数能正常返回的话,返回的是文件指针相较于起始位置的偏移量。
rewind
void rewind(FILE* stream);
让文件指针指向文件的起始位置。
文件读取结束的判断
feof
int feof(FILE* stream);
这个函数是用于文件结束,判断是读取失败还是遇到文件结束。
- 判断文本文件是否读取结束:
fgetc判断是否为EOF
fgets判断是否为NULL
- 判断二进制文件是否读取结束
判断返回值是否小于实际要读的个数,fread判断返回值是否小于实际要读的个数。
边栏推荐
- Hit the test site directly: summary of common agile knowledge points in PMP examination
- STM8S003F3 内部flash调试
- SDLC software development life cycle and model
- SLA 、SLO & SLI
- MySQL optimistic lock
- Oracle使用impdp导入报错:ORA-39001: 参数值无效 ORA-39000: 转储文件说明错误 ORA-39088: 文件名不能包含路径说明
- Kendryte K210 在freertos上的lcd屏幕的使用
- Why is the index in [mysql] database implemented by b+ tree? Is hash table / red black tree /b tree feasible?
- Optimistic lock pessimistic lock applicable scenario
- Briefly describe synchronized and lock upgrade
猜你喜欢

Sorting also needs to know the information and linked list

BiSeNet v1

Kendryte K210 在freertos上的lcd屏幕的使用

What scenarios have rust, which is becoming more and more mature, applied?

What are the advantages of real-time cloud rendering

图的相关操作

SVN客户端(TortoiseSVN)安装及使用说明

如何选择数字孪生可视化平台

imx6 RTL8189FTV移植

更新|3DCAT实时云渲染 v2.1.2版本全新发布
随机推荐
Brief introduction of bubble sort and quick sort
TME2022校园招聘后台开发/运营开发/业务运维/应用开发笔试(I)编程题的一点自我分析
越来越成熟的Rust,都应用了哪些场景呢?
云流化和云桌面有什么关系
Go channel simple notes
RestTemplate通过泛型实现POST、PUT、DELETE、GET、集合请求以及文件上传(可批量文件、可带参数)的统一封装(可打印日志)
云VR:虚拟现实专业化的下一步
Keil5 “Loading PDSC Debug Description Failed for STMicroelectronics STM32Hxxxxxxx”解决办法
如何选择数字孪生可视化平台
二叉树的相关操作
Which futures account is the best and safest
"Digital security" alert NFT's seven Scams
Which real-time gold trading platform is reliable and safe?
go defer与recover简单笔记
Wu Enda's machine learning programming operation cannot be suspended pause problem solved
STM8S003F3 uart的使用
Ch582 ble 5.0 uses Le coded broadcast and connection
Dating activity records
Update 3dcat real time cloud rendering V2.1.2 release
「行话」| 用DevOps高效交付游戏,是种什么体验?