当前位置:网站首页>详解C语言文件操作
详解C语言文件操作
2022-07-17 21:20:00 【终为—NULL】
每天进步一点点,坚持带来大改变!!!

目录
前言:
当我们想要将数据保存下来的时候,可以使用文件直接将数据存放到电脑的硬盘上,这样就可以做到数据的永久保存
1.什么是文件:
磁盘上的文件是文件,但是在程序设计中,我们一般谈文件有两种:程序文件和数据文件
1.程序文件:
包括源程序文件(后缀为.c),目标文件(windows环境后缀为.obj),可执行程序(windows环境后缀为.exe)。
2.数据文件:
文件的内容不一定是程序,而是程序运行时读写的数据,比如程序运行需要从中读取数据的文件,或者输出内容的文件。
3.文件名:
文件路径+文件名主干+文件后缀
2.文件的打开和关闭:
1.文件指针:
每个被使用的文件都在内存中开辟了一块相应的文件信息区,用来存放文件的相关信息,这些文件信息保存在一个结构体变量中,取名为FILE
定义一个文件指针变量:
FILE*pf
2.文件的关闭和打开:
文件的打开:fopen
FILE*fopen(constchar*filename,constchar*mode);
文件的关闭:fclose
intfclose(FILE*stream);
打开方式:
3.文件的顺序读写:
1.写一个字符:
intfputc(intc,FILE*stream);
2.读一个字符:
intfgetc(FILE*stream);
3.写一行数据:
intfputs(constchar*string,FILE*stream);
4.读一行数据:
char*fgets(char*string,intn,FILE*stream);
5.格式化输入数据:
格式化数据:包含各种数据类型
intfprintf(FILE*stream,constchar*format [, argument ]...);
6.格式化输出数据:
intfscanf(FILE*stream,constchar*format [, argument ]... );
7.以二进制的形式输出数据:
size_tfwrite(constvoid*buffer,size_tsize,size_tcount,FILE*stream);
将count个大小为size的数据以二进制的形式输出到文件流中
因为是通过二进制的形式写入文件,所以不能通过肉眼读懂文件中的内容
8.以二进制的形式读取数据:
size_tfread(void*buffer,size_tsize,size_tcount,FILE*stream);
将count个大小为size的数据从文件中以二进制形式读取出来
4.对比几组函数:
scanf:是针对标准化输入流的格式化输入语句
printf:是针对标准化输出流的格式化输出语句
fscanf:是针对所有输入流的格式化输入语句
fprintf:是针对所有输出流的格式化输出语句
sscanf:
int sscanf( const char *buffer, const char *format [, argument ] ... );
将字符串转换为格式化的输出语句
sprintf:
int sprintf( char *buffer, const char *format [, argument] ... );
将格式化的输入语句转换对应的字符串中:
3.文件的随机读写:
1.fseek:
根据文件指针的位置和偏移量来定位文件指针:
intfseek(FILE*stream,longoffset,intorigin );
2.ftell
返回文件指针相对与起始位置的偏移量:
longftell(FILE*stream);
3.rewind
让文件指针返回到起始位置:
voidrewind(FILE*stream);
4.文本文件和二进制文件:
文本文件:以ASCII的形式存储到文件的数据被称为文本文件
二进制文件:数据在内存中是以二进制的形式存储的,如果不加转换直接存储到文件中就是二进制文件
5.文件读取的结束的判定:
1.feof
intfeof(FILE*stream);
不能用feof的返回值直接用来判定文件是否结束,而是应用于当文件读取结束的时候,判断是读取失败结束,还是遇到文件尾结束
1.文本文件读取结束:
fgetc判断是否为EOF.
fgets判断返回值是否为NULL.
2.二进制文件读取结束:
fread判断返回值是否小于实际要读的个数。
1.文本文件的例子:
2.二进制文件的例子:
6.文件缓冲区:
从内存向磁盘输出数据会先送到内存中的缓冲区,装满缓冲区后才一起送到磁盘上。如果从磁盘向计算机读入数据,则从磁盘文件中读取数据输入到内存缓冲区(充满缓冲区),然后再从缓冲区逐个地将数据送到程序数据区(程序变量等)。缓冲区的大小根据C编译系统决定的。
总结:以上是关于C语言文件操作知识点详解,希望能在编程路的学习上能够互相帮助,互相促进,欢迎大家点赞,留言评论!!!
边栏推荐
- Huawei technologies:jonathan Krolikowski | from design to deployment, zero contact deep reinforcement learning WLANs
- 版本通告|Apache Doris 1.1 Release 版本正式发布!
- 函数初认识-下
- C - pointer
- Optimal biking strategy [DP + two points]
- How to avoid global index in pychart? How to cancel the indexing of a folder?
- Robotics at google:laura Graesser | i-sim2real: strengthen the learning robot strategy in the close human-computer interaction cycle
- 华为无线设备配置频谱导航
- ClassNotFoundException:com.tongweb.geronimo.osgi.locator.ProviderLocator
- topy库的安装(拓扑优化软件)
猜你喜欢

歐奈爾的RPS曲線的編制方法(陶博士原創)

慎用TongWeb的热部署功能

What are the ways to realize load balancing?
![[Flink] Flink will report an error if it fails to set checkpoints once. Setlerablecheckpointfailurenumber does not work](/img/62/5761d8d7b2d8ea1bc74b609b6aa3c7.jpg)
[Flink] Flink will report an error if it fails to set checkpoints once. Setlerablecheckpointfailurenumber does not work

topy库的安装(拓扑优化软件)

Colliding Mice碰撞老鼠工程分析

Redis source code and design analysis -- 2 Linked list

数据库的增删改查

Méthode de compilation de la courbe RPS d'O'Neill (originale par le Dr Tao)

贝塞尔曲线简单介绍
随机推荐
Use tongweb's hot deployment function with caution
陶博士月线反转6.0
Addition, deletion, modification and query of database
QChartView添加在QGridLayout中时覆盖了之前的控件
AcWing 274. Mobile services [DP]
CMAKE学习笔记
unity 字幕滚动
Prefix equality [DP | hash]
活动预告|Apache Doris x Apache SeaTunnel 联合 Meetup 开启报名!
Unveil the mystery of service grid istio service mesh
欧奈尔的RPS曲线的编制方法(陶博士原创)
Opencv template
华为无线设备配置用户CAC
ShanDong Multi-University Training #3
ClassNotFoundException:com. tongweb. geronimo. osgi. locator. ProviderLocator
00 后博士获聘南大特任副研究员,曾 4 岁上小学,14 岁考入南大!
Okaleido或杀出NFT重围,你看好它吗?
非凸优化问题经典必看综述“从对称性到几何性”,罗切斯特大学等
Compréhension initiale de la fonction - partie 2
【luogu P3220】与非(构造)(数位DP)(推论)






















