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

本文涉及的产品
容器镜像服务 ACR,镜像仓库100个 不限时长
应用实时监控服务-可观测链路OpenTelemetry版,每月50GB免费额度
云原生网关 MSE Higress,422元/月
简介: 要从文件读取,可以使用 r 模式:FILE *fptr;// 以读取模式打开文件fptr = fopen("filename.txt", "r");这将使 filename.txt 打开以进行读取。在 C 中读取文件需要一点工作。坚持住!我们将一步一步地指导您。接下来,我们需要创建一个足够大的字符串来存储文件的内容。例如,让我们创建一个可以存储多达 100 个字符的字符串:

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

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

相关文章
|
Ubuntu Linux
在Linux中如何解压 .xz 和 tar.xz 文件?
【4月更文挑战第17天】
10442 6
在Linux中如何解压 .xz 和 tar.xz 文件?
|
编解码 Linux Android开发
安卓投屏神器 Scrcpy 安装与使用(支持 Mac、Windows、Linux)
安卓投屏神器 Scrcpy 安装与使用(支持 Mac、Windows、Linux)
41916 1
|
12月前
|
Linux 文件存储 Windows
linux软连接详解!!!
本文介绍了Linux文件类型、文件属性、文件存储机制以及软链接和硬链接的概念。主要内容包括:Linux文件类型及其识别方法、文件属性的组成及查看方式、inode和block的作用、软链接和硬链接的区别及应用场景。通过具体示例,帮助读者理解Linux文件系统的运作原理。
677 2
linux软连接详解!!!
|
11月前
|
存储 程序员 编译器
C 语言中的数据类型转换:连接不同数据世界的桥梁
C语言中的数据类型转换是程序设计中不可或缺的一部分,它如同连接不同数据世界的桥梁,使得不同类型的变量之间能够互相传递和转换,确保了程序的灵活性与兼容性。通过强制类型转换或自动类型转换,C语言允许开发者在保证数据完整性的前提下,实现复杂的数据处理逻辑。
|
开发者 人工智能 自然语言处理
欢迎使用通义灵码
灵码使用指南!一键收藏。
135105 31
|
自然语言处理 编译器 Linux
C语言进阶⑳(程序环境和预处理)(#define定义宏+编译+文件包含)(下)
C语言进阶⑳(程序环境和预处理)(#define定义宏+编译+文件包含)
190 0
|
机器学习/深度学习 人工智能 供应链
AI在各行业的具体应用与未来展望
人工智能(Artificial Intelligence, AI)作为一项颠覆性技术,正在逐步改变我们的生活和工作方式。从语音助手到自动驾驶汽车,AI的应用已经深入到各个领域。本文将详细探讨AI在不同行业中的具体应用,以及未来可能的发展方向。
3340 6
|
JSON C语言 数据格式
使用cJSON库实现JSON与C结构体的互转
在实际应用中,我们经常需要将JSON格式的数据与C语言中的结构体进行相互转换。cJSON是一个非常便捷的C语言JSON解析库,它可以帮助我们在C语言中轻松地处理JSON数据。本文将介绍如何使用cJSON库来实现JSON数据与C结构体的互转。
1157 2
|
机器学习/深度学习
马修斯相关系数MCC简介
在评估机器学习模型的性能时,F1score都被首选指标。在本文中,我们将介绍一个值得更多关注和认可的替代度量:马修斯相关系数(MCC)。
1139 0