C语言—文件

C中文件可分为文本文件和二进制文件。

文件指针和FILE 类型

在C语言中,FILE 类型是一个用于表示文件流结构体类型。这个结构体在标准I/O(输入/输出)库中定义,尽管其确切的内部结构对程序员是隐藏的,也可能因不同的编译器实现而有所不同。FILE 结构体包含了所有用于文件操作的必要信息,例如文件的位置指针、错误指示器、文件结束指示器等。

创建文件指针

使用 FILE 类型创建文件指针,用于后续的文件操作。

FILE *fp;

打开文件

使用 fopen 函数打开文件时,会返回一个 FILE 类型的指针。

fp = fopen("example.txt", "r");  // 打开文件用于读取
if (fp == NULL) {// 错误处理
}

读写文件

通过 FILE 类型的指针,可以使用各种文件操作函数,如 fprintf、fscanf、fgets、fputs、fread 和 fwrite 等。

fprintf(fp, "Hello, World!");  // 写入文件
char buffer[100];
fgets(buffer, 100, fp);        // 从文件读取

fprintf 和 fscanf

fprintf 函数用于向文件写入格式化的输出,类似于 printf,但输出到指定的文件流。

FILE *fp = fopen("file.txt", "w");
fprintf(fp, "The value of pi: %f\n", 3.1416);
fclose(fp);

fscanf 函数用于从文件读取格式化的输入,类似于 scanf,但从指定的文件流读取。

FILE *fp = fopen("file.txt", "r");
int age;
fscanf(fp, "%d", &age);
fclose(fp);

fgets 和 fputs

fgets 函数用于从文件中读取一行,它会读取直到换行符或文件结束,或者读取到指定的字符数为止。

char buffer[100];
FILE *fp = fopen("file.txt", "r");
if (fgets(buffer, 100, fp) != NULL) {printf("%s", buffer);
}
fclose(fp);

fputs 函数用于向文件写入一个字符串,但不包括空字符(‘\0’)

fread 和 fwrite

fread 函数用于从文件读取数据块。它适用于二进制文件或需要读取固定大小数据块的场合。

FILE *fp = fopen("data.bin", "rb");
char data[100];
size_t bytesRead = fread(data, sizeof(char), 100, fp);
fclose(fp);

fwrite 函数用于向文件写入数据块。它同样适用于二进制文件或需要写入固定大小数据块的场合。

FILE *fp = fopen("data.bin", "wb");
char data[100] = "Some data";
fwrite(data, sizeof(char), strlen(data), fp);
fclose(fp);
FILE *fp = fopen("file.txt", "w");
fputs("Hello, World!", fp);
fclose(fp);

关闭文件

文件操作完成后,使用 fclose 关闭文件,释放资源。

fclose(fp);

文件定位

使用 fseek、ftell 和 rewind 等函数移动文件指针或获取当前位置。

fseek(fp, 0, SEEK_END);  // 移动到文件末尾
long fileSize = ftell(fp);  // 获取文件大小
rewind(fp);  // 回到文件开头

举例

下面是一个简单的示例,展示了如何在C语言中创建一个文件,向其中写入一些文本,然后读取并显示这些文本:

#include <stdio.h>int main() {FILE *fp;// 打开文件用于写入fp = fopen("test.txt", "w");if (fp == NULL) {perror("Error opening file");return -1;}fprintf(fp, "Hello, file!\n");fclose(fp);  // 关闭文件// 打开文件用于读取fp = fopen("test.txt", "r");if (fp == NULL) {perror("Error opening file");return -1;}char buffer[100];fgets(buffer, 100, fp);printf("Read from file: %s", buffer);fclose(fp);  // 关闭文件return 0;
}

注意:上述代码在VS2015中报错的话,改成fp = fopen_s(&fp,“test.txt”, “r”);即可

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/624127.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

高精度PWM脉宽调制信号转模拟信号隔离变送器1Hz~10KHz转0-5V/0-10V/1-5V,0-10mA/0-20mA/4-20mA

主要特性: >>精度等级&#xff1a;0.1级。产品出厂前已检验校正&#xff0c;用户可以直接使用 >>辅助电源&#xff1a;8-32V 宽范围供电 >>PWM脉宽调制信号输入: 1Hz~10KHz >>输出标准信号&#xff1a;0-5V/0-10V/1-5V,0-10mA/0-20mA/4-20mA等&…

云联接:揭开SD-WAN神秘面纱,颠覆你对网络的认知!

云联接&#xff08;Cloud Connect&#xff09;源于软件定义广域网&#xff08;SD-WAN&#xff09;。 软件定义广域网由于技术应用性强&#xff0c;近年来从一个由软件定义网络&#xff08;SDN&#xff09;部分衍生的分支概念发展为大规模普适的实践技术&#xff0c;已成为建立…

Detection-friendly dehazing: object detection in real-world hazy scenes

Detection-friendly dehazing: object detection in real-world hazy scenes 摘要 提出了一种联合架构BAD-Net&#xff0c;将去雾模块和检测模块连接成一个端到端的方法。另外&#xff0c;设计了了两个分支结构&#xff0c;用注意力融合模块来充分结合有雾和去雾特征&#xf…

bilibi分类id的秘密

问题 今天想通过rss来阅读bilibili的相关信息&#xff0c;但是如何获取排行榜的分类呢&#xff1f;研究了一下。 办法 浏览器最喜欢的F12&#xff0c;过滤关键才v2?rid,后面的数字就是分类id。 rss获取路径 [最后的数字是0&#xff0c;是所有投稿&#xff0c;数字是1的话是…

陪诊小程序开发|陪诊软件定制|陪诊系统成品功能包含哪些?

陪诊小程序是一种便捷的工具&#xff0c;为用户提供一系列服务和功能&#xff0c;方便患者在就医过程中获得更好的体验和效果。接下来我们将介绍几个主要的陪诊小程序功能。 陪诊小程序开发功能&#xff1a; 一、预约挂号功能。陪诊小程序能够连接用户和医疗机构的系统&#x…

10万字200道软件测试经典面试总结(附答案)

&#x1f345; 视频学习&#xff1a;文末有免费的配套视频可观看 &#x1f345; 关注公众号【互联网杂货铺】&#xff0c;回复 1 &#xff0c;获取《110万字200道软件测试经典面试总结&#xff08;附答案&#xff09;》pdf&#xff0c;背题更方便&#xff0c;一文在手&#xff…

python系列28:fastapi部署应用

1. 介绍与安装 FastAPI 是一个用于构建 API 的现代、快速&#xff08;高性能&#xff09;的 web 框架&#xff0c;类似flask&#xff0c;Django&#xff0c;webpy 在部署时可能需要用到下面的库&#xff1a; Uvicorn 或者 Hypercorn负责ASGI 服务器。 Starlette 负责 web 部分…

bean转换(高性能)-Mapstruct

它会在启动时会自动生成同名复制&#xff0c;生成一个临时文件&#xff0c;避免bean拷贝时使用反射带来的性能损害&#xff0c;且字段检查也是在编译时完成的&#xff0c;基本上就是运行时无性能损耗 评语&#xff1a;性能优良功能强大&#xff0c;基本上你能想到的bean/多bean…

df 计算同一列时间差(差分pandas.diff())

df pd.DataFrame({a: [1, 2, 3, 4, 5, 6],b: [1, 1, 2, 3, 5, 8],c: [1, 4, 9, 16, 25, 36]}) df.diff()# 计算某一列差值 df.c.diff(1)https://pandas.pydata.org/docs/reference/api/pandas.DataFrame.diff.html

C语言多线程基础(pthread)

1.线程和进程的概念 线程&#xff1a;进程中的一个实体&#xff0c;是CPU调度和分派的基本单位。可以与同属一个进程的其它线程共享进程所拥有的全部资源。一个线程可以创建和撤销另一个线程&#xff0c;同一进程中的多个线程之间可以并发执行&#xff0c;线程在运行中呈现间断…

Python 将列表数据写入文件(txt, csv,excel)

写入txt文件 def text_save(filename, data):#filename为写入txt文件的路径&#xff0c;data为要写入数据列表. file open(filename,a) for i in range(len(data)): s str(data[i]).replace([,).replace(],)#去除[],这两行按数据不同&#xff0c;可以选择 s s.replace(&quo…

NVS入门(基于ESP-IDF)

主要参考资料&#xff1a; B站Up主 孤独的二进制《ESP32 存储篇 NVS 非易失性存储库》 ESP-IDF开发指南>API参考>非易失性存储: https://docs.espressif.com/projects/esp-idf/zh_CN/v5.1/esp32s3/api-reference/storage/nvs_flash.html 目录 概述NVS使用&#xff08;以W…

一键制作底片效果,让视频复古感倍增!

你是否厌倦了千篇一律的视频效果&#xff0c;想要尝试一些与众不同的视觉体验&#xff1f;是否想要让你的视频散发出一种复古、怀旧的气息&#xff1f;现在&#xff0c;有了我们的底片效果制作工具&#xff0c;这些愿望全部实现 首先第一步&#xff0c;我们要进入视频剪辑高手…

16.Linux基本使用和程序部署

文章目录 1.Linux 背景知识1.1Linux 是什么1.2Linux 发行版1.3关于 Linux 我们学习什么 2.Linux 环境搭建2.1环境搭建方式2.2使用云服务器2.3使用终端软件连接到 Linux2.3.1什么是终端软件2.3.2下载安装 XShell2.3.3使用 XShell 登陆主机 3.Linux 常用命令3.1 ls3.2 pwd3.3 cd3…

关于cdn资源失效的问题,一个月了都解决不了,七牛云技术这么差的吗?

起因 最近登录我的gpt镜像网站后&#xff0c;发现关于面具的图片资源都失效了 CoCo-AI 于是紧急使用 F12 排查原因 发现所有图片拿出来都已经无法访问了。看来是资源出了问题 在网上一番搜索后发现是 cdn.staticfile.org 失效导致的&#xff0c;而该静态资源属于七牛云&#…

用模方做单体化连接草图大师时,不能联动,这个是什么原因?

答&#xff1a;需要2019版本Sketch Up&#xff0c;然后添加好对应的联动插件。 模方是一款针对实景三维模型的冗余碎片、水面残缺、道路不平、标牌破损、纹理拉伸模糊等共性问题研发的实景三维模型修复编辑软件。模方4.1新增自动单体化建模功能&#xff0c;支持一键自动提取房屋…

大数据开发之Hive(查询、分区表和分桶表、函数)

第 6 章&#xff1a;查询 6.1 基本语法及执行顺序 1、查询语句语法 select_expr, select_expr, ... FROM table_reference [WHERE where_condition] [GROUP BY col_list] [ORDER BY col_list] [CLUSTER BY col_list| [DISTRIBUTE BY col_list] [SORT BY col_list]] [LIMIT n…

htmx 只是另一个 JavaScript 框架吗?老外都吵上了

对 htmx 最常见的批评之一通常来自第一次听说它的人&#xff0c;如下所示&#xff1a; 你抱怨现代前端框架的复杂性&#xff0c;但你的解决方案只是另一个复杂的前端框架。 这是一个很好的反对意见&#xff01;对于你引入到项目中的任何第三方 (3P) 代码&#xff0c;你都有权提…

HarmonyOS 开发基础(八)Row和Column

HarmonyOS 开发基础&#xff08;八&#xff09;Row和Column 一、Column 容器 1、容器说明&#xff1a; 纵向容器主轴方向&#xff1a;从上到下纵向交叉轴方向&#xff1a;从左到右横向 2、容器属性&#xff1a; justifyContent&#xff1a;设置子元素在主轴方向的对齐格式…

实例分割论文精读:Mask R-CNN

1.摘要 本文提出了一种概念简单、灵活、通用的实例分割方法&#xff0c;该方法在有效地检测图像中的物体同时&#xff0c;为每个物体实例生成一个实例分割模板&#xff0c;添加了一个分支&#xff0c;用于预测一个对象遮罩&#xff0c;与现有的分支并行&#xff0c;用于边界框…