首页 > 其他分享 >C 语言文件读取全指南:打开、读取、逐行输出

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

时间:2024-01-10 21:32:14浏览次数:35  
标签:指南 fptr 读取 文件 myString 100 txt 逐行

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

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

标签:指南,fptr,读取,文件,myString,100,txt,逐行
From: https://blog.51cto.com/xiaowange/9186211

相关文章

  • ? 开源即时通讯(IM)项目OpenIM源码部署指南
    OpenIM的部署涉及多个组件,并支持多种方式,包括源码、Docker和Kubernetes等。这要求在确保不同部署方式之间的兼容性同时,还需有效管理各版本之间的差异。确实,这些都是复杂的问题,涉及到深入的技术细节和精准的系统配置。我们的目标是简化部署流程,同时保持系统的灵活性和稳定性,以适应不......
  • MyBatis实战指南(二):工作原理与基础使用详解
    MyBatis是一个优秀的持久层框架,它支持定制化SQL、存储过程以及高级映射。那么,它是如何工作的呢?又如何进行基础的使用呢?本文将带你了解MyBatis的工作原理及基础使用。一、MyBatis的工作原理1.1MyBatis的工作原理工作原理图示:1、读取MyBatis配置文件mybatis-config.xml为MyBat......
  • MyBatis实战指南(二):工作原理与基础使用详解
    MyBatis是一个优秀的持久层框架,它支持定制化SQL、存储过程以及高级映射。那么,它是如何工作的呢?又如何进行基础的使用呢?本文将带你了解MyBatis的工作原理及基础使用。一、MyBatis的工作原理1.1MyBatis的工作原理工作原理图示:1、读取MyBatis配置文件mybatis-config.xml为MyBa......
  • iOS 应用上架指南:资料填写及提交审核
    ​ iOS应用上架指南:资料填写及提交审核摘要本文提供了iOS新站上架资料填写及提交审核的详细指南,包括创建应用、资料填写-综合、资料填写-IOSApp和提交审核等步骤。通过本指南,您将了解到如何填写正确的资料,并顺利通过苹果公司的审核。引言在开发iOS应用后,将其上架到AppSto......
  • 浏览器读取计算机文件信息 showDirectoryPicker
    效果图代码<!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"/><metaname="viewport"content="width=device-width,initial-scale=1.0"/><title>选择电脑文件夹</title&g......
  • 2024年1月Java项目开发指南1:环境与工具准备
    准备工作基础能力开发能力的事咱先不谈,有两个基础技能要学一下。1.学习使用Markdown编写文档2.学会使用git拉取代码和提交代码软件准备电脑需要安装以下软件:IDEA2023.2及其以上(Java开发统一使用IDEA)Webstorm2023.2及其以上(也可以使用VScode或者Hbuilder或者Dreamweav......
  • 2024年1月Java项目开发指南2:项目设计
    确定软件架构1.前端用什么技术,什么框架,什么版本2.后端用什么技术,什么框架,什么版本3.用些什么软件,软件版本?比如:前端:vue3+Element-Plus+Axios后端:Java17SpringbootMyBatis-plusMaven3数据库:MySQL5.5后端开发工具:IDEA2023.2.2前端开发工具:Webstorm2023.2.2接口管理......
  • Next.js 开发指南 路由篇 | 动态路由、路由组、平行路由和拦截路由
     前言实际项目开发的时候,有的路由场景会比较复杂,比如数据库里的文章有很多,我们不可能一一去定义路由,此时该怎么办?组织代码的时候,有的路由是用于移动端,有的路由是用于PC端,该如何组织?如何有条件的渲染页面,比如未授权的时候显示登录框?如何让同一个路由根据情况不同展示不同的内......
  • 程序员建议指南
    IDEA代码质量检查工具插件插件名称作用建议程度IDEA自带插件规范编译器警告强制SonarLint代码质量检查强制CodeMetric代码复杂度提醒建议MetricsReloaded代码复杂度计算建议AlibabaJavaCodingGuidelines代码规范建议/部分规范不建议代码......
  • 读取excel表格的内容并输出打印
    1、这里用到的是xxx.xlsx的excel表,如果用.xls的旧版excel表可能会报错,需要自己调整代码(简单的测试,取出内容根据业务自行处理)publicstaticvoidmain(String[]args)throwsException{Filefile=newFile("D:\\test001\\qhData.xlsx");FileInputSt......