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 语言文件读取全指南:打开、读取、逐行输出的更多相关文章

  1. GO语言文件的创建与打开实例分析

    本文实例分析了GO语言文件的创建与打开用法.分享给大家供大家参考.具体分析如下: 文件操作是个很重要的话题,使用也非常频繁,熟悉如何操作文件是必不可少的.Golang 对文件的支持是在 os pack ...

  2. C语言 文件操作6--文件打开方式详解

    fopen文件打开模式 r代表read的简写,+代表可读可写,w代表write,b代表bit二进制位,t代表text r 打开只读文件,该文件必须存在r+ 打开可读可写的文件,该文件必须存在(这里的写 ...

  3. 【转载】Win10打开U盘提示“文件或目录损坏无法读取”怎么办?

    以下文转载至系统之家 网址:http://www.xitongzhijia.net/xtjc/20190314/152334.html (PS:暂未亲测) Win10打开U盘提示“文件或目录损坏无法读 ...

  4. PHP中文件操作(1)--打开/读取文件

    1.打开文件(fopen) 语法:resource  $fp=fopen(文件地址,模式),返回的是文件指针(file pointer) 模式 含义 r 只读 w 写(清空重写) a 追加 $fp = ...

  5. 第9.4节 Python中用readline读取二进制文件方式打开文件

    在<第9.3节 Python的文件内容读取:readline>中介绍了使用readline读取文件的处理,readline除了使用文本文件方式打开文件读外,也可以读取二进制方式打开的文件, ...

  6. c语言文件的读取和写入

    文件打开类型: 文件打开输出就用: 1 #include <stdio.h> 2 3 int main() 4 { 5 FILE *fp = NULL; 6 7 fp = fopen(&q ...

  7. C/C++语言之由数字26引起的文件的数据保存与读取调试。

    首先在VS2010中遇到的问题是,建立了一个结构体 struct position{ int x; int y; }: 然后用此结构体声明一个数组rout[8]; for(int i=0;i<8 ...

  8. c语言文件打开模式

    (转载) 在C语言的文件操作语法中,打开文件文件有以下12种模式,如下图: 打开模式  只可以读   只可以写  读写兼备 文本模式 r w a r+ w+ a+ 二进制模式 rb wb ab  rb ...

  9. C#操作Excel(2)-- 打开-读取Excel文档

    由于要为某软件实现导出Excel功能,故有此文. 本文的开发环境是Visual Studio 2010 ,C#, Excel 2007. 新建C#工程后打开Solution Explorer,可以看到 ...

  10. 文件结束符和C\C++读取文件方式

    http://www.cnblogs.com/cvbnm/articles/2003056.html 约定编译器为 gcc2/x86: 所以 char, unsigned char 为 8 位, in ...

随机推荐

  1. ASP.NET Core MVC应用模型的构建[4]: Action的选择

    ControllerModel类型的Actions属性包含一组描述有效Action方法的ActionModel对象.对于定义在Controller类型中的所有方法,究竟哪些方法才能成为有效的Actio ...

  2. 为什么带NOLOCK的查询语句还会造成阻塞

    背景 客户反映HIS数据库在11点出现了长时间的阻塞,直到手动KILL掉阻塞的源头.请我们协助分析原因,最终定位到.NET程序中使用的SqlDataReader未正常关闭导致. 现象 登录SQL专家云 ...

  3. AtCoder Beginner Contest 338(A~E补题)

    目录 A B C题 D题 E题 A 签到 #include <bits/stdc++.h> #define rep(i,a,b) for(int i = (a); i <= (b); ...

  4. Scyther 协议形式化验证翻译 (第二章)

    论文概述:$\alpha +\forall (\sum \oint_{3}^{4})$ 第二章:  操作语义 在第二章中我提出了一种新的安全协议的模型,用于定义安全协议以及协议的行为,在明确的模型中执 ...

  5. markdown 一键上传发布

    工具介绍 工具由来 对于程序员等常常需要写文档的人来说,将本地markdown文档同步到云端博客平台,是一件比较繁琐的事情,首当其冲的是,大量的本地图片需要"互联网"化,即使网络上 ...

  6. gyroflow.xyz - 视频防抖 支持相机 gopro 不支持手机视频 - 软件推荐

    gyroflow.xyz - 视频防抖 支持相机 gopro 不支持手机视频 - 软件推荐 https://gyroflow.xyz/ https://github.com/gyroflow/gyro ...

  7. 突破英语听说要塞-连读与变音 MP3 免费下载

    学英语 连读 弱读,就是这本书最不错了. 网上这个音频 有下载,但是不好找,特此分享,拿走不谢. https://115.com/s/swns19o3359?password=df62&# 突 ...

  8. 【预训练语言模型】使用Transformers库进行GPT2预训练

    基于 HuggingFace的Transformer库,在Colab或Kaggle进行预训练. 本教程提供:英文数据集wikitext-2和代码数据集的预训练. 注:可以自行上传数据集进行训练 目的: ...

  9. 市场主流的G-sensor芯片盘点

    一 前记 1.简介 随着可穿戴智能硬件的广泛发展,G-sensor成了一个必不可少的器件.梳理,测试和运用这些传感器.是做可穿戴产品必不可少的环节. 二 产品解析 1.ST的G-sensor型号LIS ...

  10. Welcome to YARP - 2.1配置功能 - 配置文件

    目录 Welcome to YARP - 1.认识YARP并搭建反向代理服务 Welcome to YARP - 2.配置功能 2.1 - 配置文件(Configuration Files) 2.2 ...