如何构建自己的网站/云南网站建设百度
目录
- C语言文件操作函数详解
- 表格汇总
- 1. `fopen`
- 2. `fclose`
- 3. `fread`
- 4. `fwrite`
- 5. `fseek`
- 6. `ftell`
- 7. `rewind`
- 8. `fprintf`
- 9. `fscanf`
- 10. `feof`
- 11. `ferror`
- 12. `clearerr`
- 13. 总结
- 14. 附录:函数参考表
- 15. 结束语
- 相关文章:
C语言文件操作函数详解
C语言提供了一组标准库函数来处理文件操作,这些函数定义在 <stdio.h>
头文件中。文件操作包括文件的打开、读写、关闭以及文件属性的查询等。以下是常用文件操作函数的详细讲解,包括函数原型、参数说明、返回值说明、示例代码和表格汇总。
表格汇总
函数 | 作用 | 示例 | 输出 |
---|---|---|---|
fopen | 打开文件 | fopen("file.txt", "r") | 文件指针 |
fclose | 关闭文件 | fclose(file) | 返回 0 或 EOF |
fread | 从文件中读取数据 | fread(buffer, size, count, file) | 读取的数据 |
fwrite | 将数据写入文件 | fwrite(buffer, size, count, file) | 写入的数据 |
fseek | 设置文件位置指针 | fseek(file, offset, origin) | 返回 0 或 EOF |
ftell | 获取文件位置指针 | ftell(file) | 文件位置 |
rewind | 重置文件位置指针到文件开头 | rewind(file) | 无返回值 |
fprintf | 格式化输出到文件 | fprintf(file, "data: %d", value) | 格式化的字符串 |
fscanf | 从文件中格式化输入 | fscanf(file, "%d", &value) | 读取的值 |
feof | 检查文件是否到达文件末尾 | feof(file) | 返回非零值或 0 |
ferror | 检查文件操作是否发生错误 | ferror(file) | 错误代码 |
clearerr | 清除文件流的错误和EOF标志 | clearerr(file) | 无返回值 |
1. fopen
函数原型:
FILE *fopen(const char *filename, const char *mode);
参数说明:
filename
: 要打开的文件的路径。mode
: 文件打开模式,如"r"
(只读)、"w"
(只写)、"a"
(追加)等。
返回值说明:
- 成功时,返回指向
FILE
类型的文件指针;失败时,返回NULL
。
示例代码:
#include <stdio.h>int main() {FILE *file;file = fopen("example.txt", "w");if (file == NULL) {perror("无法打开文件");return 1;}fprintf(file, "Hello, World!\n");fclose(file);return 0;
}
表格说明:
函数 | 作用 | 示例 | 输出 |
---|---|---|---|
fopen | 打开文件 | fopen("example.txt", "w") | 文件指针或 NULL |
2. fclose
函数原型:
int fclose(FILE *stream);
参数说明:
stream
: 要关闭的文件指针。
返回值说明:
- 成功时,返回
0
;失败时,返回EOF
。
示例代码:
#include <stdio.h>int main() {FILE *file;file = fopen("example.txt", "w");if (file == NULL) {perror("无法打开文件");return 1;}fprintf(file, "Hello, World!\n");if (fclose(file) != 0) {perror("无法关闭文件");return 1;}return 0;
}
表格说明:
函数 | 作用 | 示例 | 输出 |
---|---|---|---|
fclose | 关闭文件 | fclose(file) | 0 或 EOF |
3. fread
函数原型:
size_t fread(void *ptr, size_t size, size_t count, FILE *stream);
参数说明:
ptr
: 指向存储读取数据的内存块的指针。size
: 每个元素的字节数。count
: 要读取的元素数量。stream
: 文件指针。
返回值说明:
- 返回成功读取的元素数量。如果返回值小于
count
,可能发生了文件结束或读取错误。
示例代码:
#include <stdio.h>int main() {FILE *file;char buffer[20];size_t bytesRead;file = fopen("example.txt", "r");if (file == NULL) {perror("无法打开文件");return 1;}bytesRead = fread(buffer, sizeof(char), sizeof(buffer) - 1, file);buffer[bytesRead] = '\0'; // 确保字符串结束符printf("读取数据: %s\n", buffer);fclose(file);return 0;
}
表格说明:
函数 | 作用 | 示例 | 输出 |
---|---|---|---|
fread | 从文件中读取数据 | fread(buffer, size, count, file) | 读取的数据 |
4. fwrite
函数原型:
size_t fwrite(const void *ptr, size_t size, size_t count, FILE *stream);
参数说明:
ptr
: 指向要写入文件的内存块的指针。size
: 每个元素的字节数。count
: 要写入的元素数量。stream
: 文件指针。
返回值说明:
- 返回成功写入的元素数量。如果返回值小于
count
,可能发生了写入错误。
示例代码:
#include <stdio.h>int main() {FILE *file;const char *text = "Hello, File Writing!";file = fopen("example.txt", "w");if (file == NULL) {perror("无法打开文件");return 1;}if (fwrite(text, sizeof(char), strlen(text), file) < strlen(text)) {perror("写入文件失败");fclose(file);return 1;}fclose(file);return 0;
}
表格说明:
函数 | 作用 | 示例 | 输出 |
---|---|---|---|
fwrite | 将数据写入文件 | fwrite(buffer, size, count, file) | 写入的数据 |
5. fseek
函数原型:
int fseek(FILE *stream, long offset, int whence);
参数说明:
stream
: 文件指针。offset
: 从whence
指定的位置偏移的字节数。whence
: 指定偏移的起始位置,可以是SEEK_SET
(文件开头)、SEEK_CUR
(当前位置)、SEEK_END
(文件末尾)。
返回值说明:
- 成功时返回
0
;失败时返回-1
。
示例代码:
#include <stdio.h>int main() {FILE *file;long position;file = fopen("example.txt", "r");if (file == NULL) {perror("无法打开文件");return 1;}fseek(file, 5, SEEK_SET); // 从文件开头偏移5个字节position = ftell(file); // 获取当前文件位置printf("文件位置: %ld\n", position); // 输出: 文件位置: 5fclose(file);return 0;
}
表格说明:
函数 | 作用 | 示例 | 输出 |
---|---|---|---|
fseek | 设置文件位置指针 | fseek(file, offset, whence) | 成功时 0 或 -1 |
6. ftell
函数原型:
long ftell(FILE *stream);
参数说明:
stream
: 文件指针,指向一个已打开的文件。
返回值说明:
- 返回从文件开头到当前位置的字节数。成功时返回当前文件位置的偏移量,失败时返回
-1L
。
示例代码:
#include <stdio.h>int main() {FILE *file;long position;file = fopen("example.txt", "r");if (file == NULL) {perror("无法打开文件");return 1;}fseek(file, 10, SEEK_SET); // 从文件开头偏移10个字节position = ftell(file); // 获取当前文件位置printf("文件当前位置: %ld\n", position); // 输出: 文件当前位置: 10fclose(file);return 0;
}
表格说明:
函数 | 作用 | 示例 | 输出 |
---|---|---|---|
ftell | 获取文件当前位置 | ftell(file) | 文件当前位置: 10 |
7. rewind
函数原型:
void rewind(FILE *stream);
参数说明:
stream
: 文件指针,指向一个已打开的文件。
返回值说明:
- 无返回值。此函数将文件位置指针重置到文件的开头。
示例代码:
#include <stdio.h>int main() {FILE *file;char buffer[50];file = fopen("example.txt", "r");if (file == NULL) {perror("无法打开文件");return 1;}fread(buffer, sizeof(char), sizeof(buffer) - 1, file); // 读取文件数据buffer[sizeof(buffer) - 1] = '\0'; // 确保字符串结束符rewind(file); // 重置文件指针到开头fread(buffer, sizeof(char), sizeof(buffer) - 1, file); // 重新读取文件数据buffer[sizeof(buffer) - 1] = '\0'; // 确保字符串结束符printf("重新读取的数据: %s\n", buffer); // 输出重新读取的数据fclose(file);return 0;
}
表格说明:
函数 | 作用 | 示例 | 输出 |
---|---|---|---|
rewind | 重置文件指针到文件开头 | rewind(file) | 无输出(重置指针) |
8. fprintf
函数原型:
int fprintf(FILE *stream, const char *format, ...);
参数说明:
stream
: 文件指针,指向一个已打开的文件。format
: 格式字符串,用于指定输出格式。...
: 其他格式化数据,根据format
中的占位符提供。
返回值说明:
- 成功时,返回输出的字符总数;失败时返回
EOF
。
示例代码:
#include <stdio.h>int main() {FILE *file;int number = 42;file = fopen("example.txt", "w");if (file == NULL) {perror("无法打开文件");return 1;}if (fprintf(file, "The answer is %d\n", number) < 0) {perror("写入文件失败");fclose(file);return 1;}fclose(file);return 0;
}
表格说明:
函数 | 作用 | 示例 | 输出 |
---|---|---|---|
fprintf | 格式化输出到文件 | fprintf(file, "data: %d", value) | 格式化的字符串 |
9. fscanf
函数原型:
int fscanf(FILE *stream, const char *format, ...);
参数说明:
stream
: 文件指针,指向一个已打开的文件。format
: 格式字符串,用于指定输入格式。...
: 其他格式化输入,根据format
中的占位符提供。
返回值说明:
- 成功时,返回成功匹配和赋值的项目数;失败时返回
EOF
。
示例代码:
#include <stdio.h>int main() {FILE *file;int number;file = fopen("example.txt", "r");if (file == NULL) {perror("无法打开文件");return 1;}if (fscanf(file, "The answer is %d", &number) != 1) {perror("读取文件失败");fclose(file);return 1;}printf("读取的数字: %d\n", number);fclose(file);return 0;
}
表格说明:
函数 | 作用 | 示例 | 输出 |
---|---|---|---|
fscanf | 从文件中格式化输入 | fscanf(file, "%d", &value) | 读取的值 |
10. feof
函数原型:
int feof(FILE *stream);
参数说明:
stream
: 文件指针,指向一个已打开的文件。
返回值说明:
- 如果到达文件末尾,返回非零值;否则返回
0
。
示例代码:
#include <stdio.h>int main() {FILE *file;char buffer[20];file = fopen("example.txt", "r");if (file == NULL) {perror("无法打开文件");return 1;}while (fread(buffer, sizeof(char), sizeof(buffer) - 1, file) > 0) {buffer[sizeof(buffer) - 1] = '\0';printf("读取的数据: %s\n", buffer);}if (feof(file)) {printf("到达文件末尾\n");} else {printf("文件读取错误\n");}fclose(file);return 0;
}
表格说明:
函数 | 作用 | 示例 | 输出 |
---|---|---|---|
feof | 检查文件是否到达文件末尾 | feof(file) | 到达文件末尾 |
11. ferror
函数原型:
int ferror(FILE *stream);
参数说明:
stream
: 文件指针,指向一个已打开的文件。
返回值说明:
- 返回非零值表示发生了错误;返回
0
表示没有错误。
示例代码:
#include <stdio.h>int main() {FILE *file;char buffer[20];file = fopen("example.txt", "r");if (file == NULL) {perror("无法打开文件");return 1;}if (fread(buffer, sizeof(char), sizeof(buffer) - 1, file) < 0) {if (ferror(file)) {perror("读取文件错误");}fclose(file);return 1;}fclose(file);return 0;
}
表格说明:
函数 | 作用 | 示例 | 输出 |
---|---|---|---|
ferror | 检查文件操作是否发生错误 | ferror(file) | 错误代码 |
12. clearerr
函数原型:
void clearerr(FILE *stream);
参数说明:
stream
: 文件指针,指向一个已打开的文件。
返回值说明:
- 无返回值。此函数清除流的错误标志和EOF标志。
示例代码:
#include <stdio.h>int main() {FILE *file;char buffer[10];file = fopen("example.txt", "r");if (file == NULL) {perror("无法打开文件");return 1;}fread(buffer, sizeof(char), sizeof(buffer) - 1, file); // 模拟读取if (ferror(file)) {printf("读取文件时发生错误\n");clearerr(file); // 清除错误标志}// 继续操作文件fclose(file);return 0;
}
表格说明:
函数 | 作用 | 示例 | 输出 |
---|---|---|---|
clearerr | 清除文件流的错误和EOF标志 | clearerr(file) | 无输出(清除标志) |
13. 总结
C语言的文件操作函数提供了一系列用于处理文件的工具,包括打开、关闭、读写、定位文件指针以及检查文件状态等。这些函数为程序员提供了灵活的文件管理能力,从简单的文件读写到复杂的文件处理任务,都可以通过这些标准库函数来实现。掌握这些函数的使用对于编写健壮且可靠的C程序至关重要。
14. 附录:函数参考表
函数 | 作用 | 示例 | 返回值 |
---|---|---|---|
fopen | 打开文件 | fopen("file.txt", "r") | 文件指针或 NULL |
fclose | 关闭文件 | fclose(file) | 0 或 EOF |
fread | 从文件中读取数据 | fread(buffer, size, count, file) | 读取的数据 |
fwrite | 将数据写入文件 | fwrite(buffer, size, count, file) | 写入的数据 |
fseek | 设置文件位置指针 | fseek(file, offset, SEEK_SET) | 0 或 EOF |
ftell | 获取文件当前位置 | ftell(file) | 文件位置 |
rewind | 重置文件位置指针到文件开头 | rewind(file) | 无返回值 |
fprintf | 格式化输出到文件 | fprintf(file, "data: %d", value) | 格式化的字符串 |
fscanf | 从文件中格式化输入 | fscanf(file, "%d", &value) | 读取的值 |
feof | 检查文件是否到达文件末尾 | feof(file) | 非零值或 0 |
ferror | 检查文件操作是否发生错误 | ferror(file) | 错误代码 |
clearerr | 清除文件流的错误和EOF标志 | clearerr(file) | 无返回值 |
通过理解和运用这些文件操作函数,可以有效地进行文件读写操作,并处理各种文件相关的错误和状态检查。这对于实现文件管理功能以及确保程序的健壮性具有重要意义。
15. 结束语
- 本节内容已经全部介绍完毕,希望通过这篇文章,大家对C语言文件操作函数有了更深入的理解和认识。
- 感谢各位的阅读和支持,如果觉得这篇文章对你有帮助,请不要吝惜你的点赞和评论,这对我们非常重要。再次感谢大家的关注和支持!点我关注❤️
相关文章:
- 指针的神秘探险:从入门到精通的奇幻之旅 !
相关文章:

【C语言】文件操作函数详解
目录 C语言文件操作函数详解表格汇总1. fopen2. fclose3. fread4. fwrite5. fseek6. ftell7. rewind8. fprintf9. fscanf10. feof11. ferror12. clearerr13. 总结14. 附录:函数参考表15. 结束语相关文章: C语言文件操作函数详解 C语言提供了一组标准库函…...

Java 垃圾回收,看一遍就懂
了解 Java 垃圾收集的工作原理并优化应用程序中的内存使用情况。详细了解 Java 中内存管理的复杂性。 垃圾收集是一个关键过程,可以帮助任何Java 开发公司。编程语言中的这一强大功能可以巧妙地管理内存分配和释放,防止内存泄漏并优化资源利用率。它就像…...

手把手教你CNVD漏洞挖掘 + 资产收集
0x1 前言 挖掘CNVD漏洞有时候其实比一般的edusrc还好挖,但是一般要挖证书的话,还是需要花时间的,其中信息收集,公司资产确定等操作需要花费一定时间的。下面就记录下我之前跟一个师傅学习的一个垂直越权成功的CNVD漏洞通杀&#…...

华为云低代码AstroZero技巧教学1:表格的超链接赋能
在低代码AstroZero的标准页面设计和构建上,我们总是在思考如何让用户体验能够更加流畅。 为此,我们特推出低代码AstroZero技巧教学系列合集,让各位开发者能够更加方便快捷地掌握低代码AstroZero的操作技巧。 本次技巧内容: 在As…...

https握手过程详解
https握手过程详解 上一篇《HTTPS通讯全过程》中https握手过程实际上还有更多的细节,为什么会这样设计呢?是因为一开始将握手过程时,吧步骤说的太详细会导致更难理解惹。所以我就先在上一篇把部分细节忽略,把原来几步的过程先简化…...

Lesson 63 Thank you, doctor
Lesson 63 Thank you, doctor 词汇 better a. 更好的 搭配:feel better get better 感觉好些了 成语:Better late than never. 晚做总比不做好。 Half a loaf is better than no bread. 有比没有好。…...

使用python和matlab实现BP神经网络算法的分析比较
分析和比较使用Python和MATLAB实现BP神经网络算法实现的复杂度、代码可读性、库支持、性能以及应用的灵活性等。 1. BP神经网络的基本原理 BP神经网络(Back Propagation Neural Network)是一种多层前馈神经网络,通过反向传播算法来训练网络。其基本思想是利用梯度下降法,…...

智慧卫生间环境传感器有哪些?智慧卫生间的特点@卓振思众
随着科技的进步和人们对生活品质的要求不断提高,智慧卫生间作为现代化设施的代表,越来越受到关注。智慧卫生间不仅仅是在外观设计上做文章,更在于其背后强大的智能系统,特别是环境传感器的应用,让厕所的管理和使用变得…...

智能分班结果自动发布系统
新学期,校园里又将迎来一批充满活力的新生。对于老师们来说,除了准备教学计划和课程内容,还有一项看似简单却颇为繁琐的任务——发布分班。传统的分班信息发布方式,通常是老师们一个个私信给学生家长,家长们收到信息后…...

vue 后台管理 指定项目别名
越多越好 文章目录 一、指定项目路径别名二、全局loading进度条实现三、动态页面标题的实现四、全局刷新 和 全屏 一、指定项目路径别名 在 vite.config.js 里配置 import path from "path"export default defineConfig({resolve:{alias:{"~":path.resol…...

【Python机器学习】FP-growth算法——构建FP树
在第二次扫描数据集时会构建一棵FP树。为构建一棵树,需要一个容器来保存树。 创建FP树的数据结构 FP树要比书中其他树更加复杂,因此需要创建一个类来保存树的每一个节点: class treeNode:def __init__(self,nameValue,numOccur,parentNode…...

JAVA itextpdf 段落自动分页指定固定行距打印
JAVA itextpdf 段落自动分页指定固定行距打印 前言:公司有个需求,打印的合同模板左上角要加上logo的图标。但是itext pdf 自动分页会按照默认的顶部高分页打印内容的,导致从第二页开始logo图标就会把合同的内容给覆盖掉了。然后尝试了挺多方法…...

基于SpringBoot+Vue的周边游平台个人管理模块的设计与实现
TOC springboot220基于SpringBootVue的周边游平台个人管理模块的设计与实现 第一章 绪论 1.1 选题背景 目前整个社会发展的速度,严重依赖于互联网,如果没有了互联网的存在,市场可能会一蹶不振,严重影响经济的发展水平…...

开源数据库同步工具monstache
Monstache是一个用Go语言编写的同步工具,主要用于将MongoDB中的数据同步到Elasticsearch中。它支持全量同步和增量同步,并提供了丰富的配置参数以及使用Go、JavaScript编写插件来自定义处理数据的逻辑的能力。Monstache 工作流程如下图: 以下…...

Ubuntu连接GitHub
报错:Please make sure you have the correct access rights and the repository exists.原因:本地没有SSH Key存在解决: 首先为系统设置github的用户名和自己的邮箱 git config --global user.name "****" git config --global us…...

微信支付流程
1. 创建订单 请求创建订单的 API 接口:把 订单金额、收货地址、订单中包含的商品信息 发送到服务器服务器响应的结果:订单编号 2.订单预支付 请求订单预支付的 API 接口:把步骤1得到的 订单编号 发送到服务器服务器响应的结果:…...

LVS理论知识
目录 1.描述以及工作原理 1.什么是LVS 2.LVS调度算法 1.静态调度算法 1.轮询RR 2.加权轮询WRR 3.目标地址hash---DH 4.源地址hash---SH 2.动态调度算法 1.LC最少连接 2.wlc加权最少连接 3.sed最少期望延迟 4.nq不排队调度算法 5.lblc基于本地最少连接 6.lnlcr带…...

uniapp接口请求this.$request
代码示例: createPhoto(url) {this.$request({url: /emp/gallery-photo/create,//后端接口method: post,//请求方法header: {//请求头tenant-id: 1,},data: {//请求参数galleryId: this.albumId,empUserId: this.empUserId,"url": url,}}).then((res) &…...

vulnhub靶机 W34KN3SS(渗透测试详解)
一、靶机信息收集 1、靶机下载地址 https://download.vulnhub.com/w34kn3ss/W34KN3SS.ova 2、扫描靶机IP 3、探测靶机端口、主机、服务版本信息 nmap -sS -sV -A -p- 192.168.31.160 4、进行目录扫描 二、web渗透测试 1、访问靶机IP 没什么发现 2、进行目录拼接访问 拼接…...

2024年8月16日嵌入式学习
今日复习信号量的知识点和学习了进程间通信和管道 总结信息量: 共享进程资源 方便 线程 抢占公共资源 带来的问题 1. 互斥访问 需要互斥锁 来保障 原子性操作 使 操作过程 完整 互斥锁: a.初始化 锁 b.加锁 //使用资源之前 …...

vue+ckEditor5 复制粘贴wold文字+图片并保存格式
第一步在vue2项目下安装 npm install --save ckeditor/ckeditor5-build-decoupled-document 第二 项目下新建一个plugins的文件夹将这个包ckeditor5-build-classic放入 (包在页面最上方 有个下载按钮 可以下载) 刚开始时 ckeditor5-build-classic文件…...

redis列表若干记录
2、列表 ziplist ziplist参数 entry结构 entry-data:节点存储的元素prelen:记录前驱节点长度encoding:当前节点编码格式encoding encoding属性 使用多个子节点存储节点元素长度,这种多字节数据存储在计算机内存中或者进行网络传输的时的字节…...

固态硬盘用mbr还是GPT?固态硬盘分区类型用mbr还是GPT分析
固态硬盘用mbr还是GPT?答:固态硬盘分区类型用mbr还是gpt其实取决于你对分区要求及引导模式。我们知道现在的引导模式有uefi和legacy两种引导模式,如果采用的是uefi引导模式,分区类型对应的就是gpt分区(guid),如果引导模…...

http/sse/websocket 三大协议演化历史以及 sse协议下 node.js express 服务实现打字机案例 负载均衡下的广播实现机制
背景 自从2022年底chatgpt上线后,sse就进入了大众的视野,之前是谁知道这玩意是什么?但是打字机的效果看起来是真的很不错,一度吸引了很多人的趋之若鹜,当然了这个东西的确挺好用,而且实现很简单࿰…...

智能时代新宠:2024年录音转文字软件
无论是学生群体记录课堂笔记,职场人士整理会议纪要,还是自媒体创作者捕捉灵感火花,录音转文字软件都以其独特的便利性和高效性赢得了广泛的好评。今天,就让我们一起探索那些深受大家喜爱的录音转文字工具吧。 1.365在线转文字 链…...

【Python机器学习】树回归——使用Python的tkinter库创建GUI
机器学习给我们提供了一些强大的工具,能从未知数据中抽取出有用的信息。因此,能否这些信息以易于人们理解的方式呈现十分重要。如果人们可以直接与算法和数据交互,将可以比较轻松的进行解释。其中一个能够同时支持数据呈现和用户交互的方式就…...

谷歌浏览器网页底图设置为全黑
输入网址:chrome://flags/ 搜索dark,选择Enabled,重启浏览器即可...

Unity | AmplifyShaderEditor插件基础(第二集:模版说明)
目录 一、前言 二、核心模版和URP模版 1.区别介绍 2.自己的模版 三、输出节点 1.界面 2.打开OutPut 3.ShderType 4.ShaderName 5.Shader大块内容 6.修改内容 四、预告 一、前言 内容全部基于以下链接基础以上讲的。 Unity | Shader基础知识(什么是shader…...

【Linux入门】Linux常见指令
目录 前言 一、Linux基本指令 1.ls指令 2.pwd命令 3.cd 指令 4.touch指令 5.mkdir指令 6.rmdir指令 && rm 指令 7.man指令 8.cp指令 9.mv指令 10.cat 11.date 12.top 13.shutdown-关机 14.重要的几个热键 二、Linux扩展指令 总结 前言 Linux指令是在…...

startData
某音startData 记得加入学习群: python爬虫&js逆向3 714283180...