C 语言文件读取全指南:打开、读取、逐行输出
C 语言中的文件读取
要从文件读取,可以使用 r 模式:
FILE *fptr;
// 以读取模式打开文件
fptr = fopen("filename.txt", "r");
这将使 filename.txt 打开以进行读取。
在 C 中读取文件需要一点工作。坚持住!我们将一步一步地指导您。
接下来,我们需要创建一个足够大的字符串来存储文件的内容。
例如,让我们创建一个可以存储多达 100 个字符的字符串:
FILE *fptr;
// 以读取模式打开文件
fptr = fopen("filename.txt", "r");
// 存储文件的内容
char myString[100];
为了读取 filename.txt 的内容,我们可以使用 fgets() 函数。
fgets() 函数接受三个参数:
fgets(myString, 100, fptr);
- 第一个参数指定要存储文件内容的位置,它将位于我们刚刚创建的 myString 数组中。
- 第二个参数指定要读取的最大数据大小,它应该与 myString 的大小 (100) 匹配。
- 第三个参数需要一个用于读取文件的文件指针(示例中的 fptr)。
现在,我们可以打印字符串,它将输出文件的内容:
FILE *fptr;
// 以读取模式打开文件
fptr = fopen("filename.txt", "r");
// 存储文件的内容
char myString[100];
// 读取内容并将其存储在 myString 中
fgets(myString, 100, fptr);
// 打印文件内容
printf("%s", myString);
// 关闭文件
fclose(fptr);
Hello World!
运行示例 »
注意:fgets() 函数只会读取文件的第一行。如果您还记得,filename.txt 中有两行文本。
要读取文件的每一行,您可以使用 while 循环:
FILE *fptr;
// 以读取模式打开文件
fptr = fopen("filename.txt", "r");
// 存储文件的内容
char myString[100];
// 读取内容并打印
while(fgets(myString, 100, fptr)) {
printf("%s", myString);
}
// 关闭文件
fclose(fptr);
Hello World!
Hi everybody!
运行示例 »
良好实践
如果您尝试打开不存在的用于读取的文件,fopen() 函数将返回 NULL。
提示:作为一种良好的实践,我们可以使用 if 语句测试 NULL,并在文件不存在时打印一些文本:
FILE *fptr;
// 以读取模式打开文件
fptr = fopen("loremipsum.txt", "r");
// 如果文件不存在,打印一些文本
if(fptr == NULL) {
printf("无法打开文件。");
}
// 关闭文件
fclose(fptr);
如果文件不存在,则会打印以下文本:
无法打开文件。
运行示例 »
考虑到这一点,如果我们再次使用上面的“读取文件”示例,我们可以创建更可持续的代码:
FILE *fptr;
// 以读取模式打开文件
fptr = fopen("filename.txt", "r");
// 存储文件的内容
char myString[100];
// 如果文件存在
if(fptr != NULL) {
// 读取内容并打印
while(fgets(myString, 100, fptr)) {
printf("%s", myString);
}
// 如果文件不存在
} else {
printf("无法打开文件。");
}
// 关闭文件
fclose(fptr);
Hello World!
Hi everybody!
C 语言中的结构体 (structs)
结构体(也称为 structs)是一种将多个相关变量组合到一起的方法。结构体中的每个变量称为结构体的“成员”。
与数组不同,结构体可以包含许多不同的数据类型 (int, float, char 等)。
创建结构体
您可以使用 struct 关键字并用花括号声明其每个成员来创建结构体:
struct MyStructure { // 结构体声明
int myNum; // 成员 (int 变量)
char myLetter; // 成员 (char 变量)
}; // 以分号结束结构体
要访问结构体,您必须创建一个变量。
在 main() 方法中使用 struct 关键字,后跟结构体的名称和结构体变量的名称:
创建名为 "s1" 的结构体变量:
struct MyStructure {
int myNum;
char myLetter;
};
int main() {
struct MyStructure s1;
return 0;
}
最后
为了方便其他设备和平台的小伙伴观看往期文章:
微信公众号搜索:Let us Coding,关注后即可获取最新文章推送
看完如果觉得有帮助,欢迎 点赞、收藏、关注
C 语言文件读取全指南:打开、读取、逐行输出的更多相关文章
- GO语言文件的创建与打开实例分析
本文实例分析了GO语言文件的创建与打开用法.分享给大家供大家参考.具体分析如下: 文件操作是个很重要的话题,使用也非常频繁,熟悉如何操作文件是必不可少的.Golang 对文件的支持是在 os pack ...
- C语言 文件操作6--文件打开方式详解
fopen文件打开模式 r代表read的简写,+代表可读可写,w代表write,b代表bit二进制位,t代表text r 打开只读文件,该文件必须存在r+ 打开可读可写的文件,该文件必须存在(这里的写 ...
- 【转载】Win10打开U盘提示“文件或目录损坏无法读取”怎么办?
以下文转载至系统之家 网址:http://www.xitongzhijia.net/xtjc/20190314/152334.html (PS:暂未亲测) Win10打开U盘提示“文件或目录损坏无法读 ...
- PHP中文件操作(1)--打开/读取文件
1.打开文件(fopen) 语法:resource $fp=fopen(文件地址,模式),返回的是文件指针(file pointer) 模式 含义 r 只读 w 写(清空重写) a 追加 $fp = ...
- 第9.4节 Python中用readline读取二进制文件方式打开文件
在<第9.3节 Python的文件内容读取:readline>中介绍了使用readline读取文件的处理,readline除了使用文本文件方式打开文件读外,也可以读取二进制方式打开的文件, ...
- c语言文件的读取和写入
文件打开类型: 文件打开输出就用: 1 #include <stdio.h> 2 3 int main() 4 { 5 FILE *fp = NULL; 6 7 fp = fopen(&q ...
- C/C++语言之由数字26引起的文件的数据保存与读取调试。
首先在VS2010中遇到的问题是,建立了一个结构体 struct position{ int x; int y; }: 然后用此结构体声明一个数组rout[8]; for(int i=0;i<8 ...
- c语言文件打开模式
(转载) 在C语言的文件操作语法中,打开文件文件有以下12种模式,如下图: 打开模式 只可以读 只可以写 读写兼备 文本模式 r w a r+ w+ a+ 二进制模式 rb wb ab rb ...
- C#操作Excel(2)-- 打开-读取Excel文档
由于要为某软件实现导出Excel功能,故有此文. 本文的开发环境是Visual Studio 2010 ,C#, Excel 2007. 新建C#工程后打开Solution Explorer,可以看到 ...
- 文件结束符和C\C++读取文件方式
http://www.cnblogs.com/cvbnm/articles/2003056.html 约定编译器为 gcc2/x86: 所以 char, unsigned char 为 8 位, in ...
随机推荐
- django中的一些装饰器用法
1.require_http_methods() 1.要求视图只接受特定的请求方法 2.该装饰器允许传递多个请求方法参数,以列表的形式,请求方法名要大写 from django.views.decor ...
- 学会了MySql高级查询让你在工作中游刃有余
一.单元概述 通过本章的学习能够理解MySQL数据库中分组查询的含义,掌握常用分组函数的使用,掌握GROUP BY子句的使用规则,掌握分组后数据结果的条件过滤,掌握SELECT语句执行过程,理解子查询 ...
- 监控系统open-falcon安装部署
目录 官方文档 安装包下载地址 环境准备 安装redis 安装mysql 安装git 安装GO 安装后台 部署前端: 邮件报警 修改ALARM配置 修改报警接口 报警测试邮件展示 Q&A 官方 ...
- 【Azure 应用服务】App Service for Container中配置与ACR(Azure Container Registry)的RABC权限
问题描述 在使用App Service for container时,在从ACR(Azure Container Registry)中获取应用的镜像时,需要使用对应的权限.默认情况为在ACR中启用Ad ...
- 【Azure 媒体服务】记使用 Media Service 的官网示例代码 Audio Analyzer 出现卡顿在 Creating event processor host .. 直到 Timeout 问题
问题描述 在使用Azure Media Service的官网示例 (media-services-v3-java --> AudioAnalytics --> AudioAnalyzer ...
- 好用网址分享-77ai导航与77搜索导航
AI(人工智能)技术正在改变我们的生活方式和工作方式,越来越多的人开始关注和使用AI相关的网站和应用程序.在这篇文章中,我将为大家介绍一些常用的AI网址导航,帮助您更好地了解和使用AI技术. AI H ...
- Java 理解“万事万物皆对象”+ 匿名对象的使用
1 /** 2 * 3 * @Description 4 * @author Bytezero·zhenglei! Email:420498246@qq.com 5 * @version 6 * @d ...
- window.open代理劫持
window.open = new Proxy(window.open, { apply(target, ctx, args) { if (hasAuth(args[0])) { return tar ...
- 并行化优化KD树算法:使用C#实现高效的最近邻搜索
本文信息 中文名:<并行化优化KD树算法:使用C#实现高效的最近邻搜索> 英文名:"Parallelized Optimization of KD-Tree Algorithm: ...
- Zabbix6.0使用教程 (五)—zabbix从二进制包安装上篇
大家好,我是乐乐.上一期我们已经讲过从源代码安装zabbix,本期着重讲从二进制包安装zabbix. 当我们在ZABBIX官方存储库可以看到,Zabbix SIA 提供如下官方RPM和DEB包: ·R ...