C 语言文件读取全指南:打开、读取、逐行输出

2024-01-12

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 ,关注后即可获取最新文章推送

看完如果觉得有帮助,欢迎 点赞、收藏、关注

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C 语言文件读取全指南:打开、读取、逐行输出 的相关文章

  • Jmeter 压测-性能调优5大注意

    2024软件测试面试刷题 这个小程序 永久刷题 靠它快速找到工作了 刷题APP的天花板 CSDN博客 文章浏览阅读2 2k次 点赞85次 收藏11次 你知不知道有这么一个软件测试面试的刷题小程序 里面包含了面试常问的软件测试基础题 web自
  • 小白也能学会的创建Git仓库实操

    2024软件测试面试刷题 这个小程序 永久刷题 靠它快速找到工作了 刷题APP的天花板 CSDN博客 文章浏览阅读2 2k次 点赞85次 收藏11次 你知不知道有这么一个软件测试面试的刷题小程序 里面包含了面试常问的软件测试基础题 web自

随机推荐

  • 深入了解鸿鹄工程项目管理系统源码:功能清单与项目模块的深度解析

    工程项目管理软件是现代项目管理中不可或缺的工具 它能够帮助项目团队更高效地组织和协调工作 本文将介绍一款功能强大的工程项目管理软件 该软件采用先进的Vue Uniapp Layui等技术框架 涵盖了项目策划决策 规划设计 施工建设到竣工交付
  • 基于查表法的永磁同步电机最大电流+弱磁控制仿真模型

    欢迎来到本博客 博主优势 博客内容尽量做到思维缜密 逻辑清晰 为了方便读者 座右铭 行百里者 半于九十 本文目录如下 目录 1 概述 2 运行结果 3 参考文献 4 Simulink仿真实现
  • Waves14 Complete Mac/win功能强大、效果出色的专业级插件集合

    在现代音频制作中 音频效果器扮演着至关重要的角色 它们能够为音频注入独特的魅力和个性 让作品更加出彩 而在众多音频效果器中 Waves14 Complete音频效果器套件无疑是一个不可或缺的利器 Waves14 Complete音频效果器套
  • 【状态估计】基于粒子滤波方法进行锂离子电池剩余寿命预测研究(Matlab代码实现)

    欢迎来到本博客 博主优势 博客内容尽量做到思维缜密 逻辑清晰 为了方便读者 座右铭 行百里者 半于九十 本文目录如下 目录 1 概述 2 运行结果 3 参考文献 4 Matlab代码实现
  • 扬帆证券:国债逆回购基础知识?

    国债逆回购基础知识 1 生意单位 沪深两商场的国债逆回购门槛为1000元 以1000的整数倍递增 最小改变金额为0 005元 2 生意费用 国债逆回购的手续费和佣金大约为0 001 0 030 有些证券公司最低收费规范为1元 即在每笔生意缺
  • 智慧互通-WEB开发工程师-唐山-社招一面

    大厂裁员频繁 应届生入职后如何活下来 Java实习面试 可转正 有校招hc 写给想去国企央企的同学 特别是长沙的小伙伴们 感谢 通俗易懂 的分享 摘录如下 题解 数字颠倒 include
  • HJ38 题解 | #球落地5次经历的路程和第5次反弹高度#

    淘宝 产品运营一面 一个博士的悲催秋招之路 能动热设计求职分享 双胞胎集团校招流程 已OC 天津就业求职好公司及薪资汇总 2022届毕业生现状 29856 22毕业到现在还没找到工作 焦虑死了 请大佬们给指点指点 百度补录timeline
  • HJ38 题解 | #球落地5次经历的路程和第5次反弹高度#

    淘宝 产品运营一面 一个博士的悲催秋招之路 能动热设计求职分享 双胞胎集团校招流程 已OC 天津就业求职好公司及薪资汇总 2022届毕业生现状 29856 22毕业到现在还没找到工作 焦虑死了 请大佬们给指点指点 百度补录timeline
  • 【计算机毕业设计】出租车管理系统

    现代经济快节奏发展以及不断完善升级的信息化技术 让传统数据信息的管理升级为软件存储 归纳 集中处理数据信息的管理方式 本出租车管理系统就是在这样的大环境下诞生 其可以帮助管理者在短时间内处理完毕庞大的数据信息 使用这种软件工具可以帮助管理人
  • 【计算机毕业设计】航空信息管理系统

    传统信息的管理大部分依赖于管理人员的手工登记与管理 然而 随着近些年信息技术的迅猛发展 让许多比较老套的信息管理模式进行了更新迭代 飞机票信息因为其管理内容繁杂 管理数量繁多导致手工进行处理不能满足广大用户的需求 因此就应运而生出相应的航空
  • 界面组件DevExpress WPF v23.2 - 更轻量级的主题支持

    DevExpress WPF Subscription拥有120 个控件和库 将帮助您交付满足甚至超出企业需求的高性能业务应用程序 通过DevExpress WPF能创建有着强大互动功能的XAML基础应用程序 这些应用程序专注于当代客户的需
  • 【计算机毕业设计】基于web的山东红色旅游信息管理系统

    有效的处理想要的相关信息和如何传播有效的信息 一直是人类不断探索的动力 人类文明火种的传承都是通过了多种媒介作为载体 也是随着社会生产力的发展不断的更新 随着互联网的到来 信息传播与管理都上升了一个新的台阶 并且方便应用的同时也要考虑信息传
  • #私密朋友圈被吐槽有bug?官方致歉!网友:尴尬了......

    2024软件测试面试刷题 这个小程序 永久刷题 靠它快速找到工作了 刷题APP的天花板 CSDN博客 文章浏览阅读2 2k次 点赞85次 收藏11次 你知不知道有这么一个软件测试面试的刷题小程序 里面包含了面试常问的软件测试基础题 web自
  • 【计算机毕业设计】校园体育赛事管理系统

    身处网络时代 随着网络系统体系发展的不断成熟和完善 人们的生活也随之发生了很大的变化 人们在追求较高物质生活的同时 也在想着如何使自身的精神内涵得到提升 而读书就是人们获得精神享受非常重要的途径 为了满足人们随时随地只要有网络就可以看书的要
  • 【计算机毕业设计】线上招聘问答系统

    计算机网络发展到现在已经好几十年了 在理论上面已经有了很丰富的基础 并且在现实生活中也到处都在使用 可以说 经过几十年的发展 互联网技术已经把地域信息的隔阂给消除了 让整个世界都可以即时通话和联系 极大的方便了人们的生活 所以说 线上招聘问
  • 全局寻优粒子群算法MPPT仿真模型(光伏阵列多峰值特性曲线)(Simulink仿真实现)

    欢迎来到本博客 博主优势 博客内容尽量做到思维缜密 逻辑清晰 为了方便读者 座右铭 行百里者 半于九十 本文目录如下 目录 1 概述 2 运行结果 3 参考文献 4 Simulink仿真实现
  • 题解 | #返回顾客名称和相关订单号以及每个订单的总价#

    Momenta实习生招聘 部门直招 军工研究所 技术小菜鸟的2023国企银行秋招总结 华为 薪资爆料 牛爱网 找对象 offer选择 而我 落荒而逃 得物实习小记 携程后端暑期实习一面 没想到这个时间点还有秋招捡漏 后悔来四大行省分科技部了
  • 【计算机毕业设计】汽车维修保养智能预约系统

    信息数据从传统到当代 是一直在变革当中 突如其来的互联网让传统的信息管理看到了革命性的曙光 因为传统信息管理从时效性 还是安全性 还是可操作性等各个方面来讲 遇到了互联网时代才发现能补上自古以来的短板 有效的提升管理的效率和业务水平 传统的
  • 【计算机毕业设计】学生就业管理系统

    如今社会上各行各业 都喜欢用自己行业的专属软件工作 互联网发展到这个时候 人们已经发现离不开了互联网 新技术的产生 往往能解决一些老技术的弊端问题 因为传统学生就业信息管理难度大 容错率低 管理人员处理数据费工费时 所以专门为解决这个难题开
  • C 语言文件读取全指南:打开、读取、逐行输出

    C 语言中的文件读取 要从文件读取 可以使用 r 模式 FILE fptr 以读取模式打开文件 fptr fopen filename txt r 这将使 filename txt 打开以进行读取 在 C 中读取文件需要一点工作 坚持住 我