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

小万哥
• 阅读 318

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

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

点赞
收藏
评论区
推荐文章
林末 林末
3年前
python读取excel数据转为json格式
做自动化时需要从excel读取数据;本文实现将excel文件数据读取为json格式,方便自动化调用读取xls文件使用xlrd读取xls文件代码:pythonimportxlrddefreadxls(file):实例化excelbookxlrd.openworkbook(file)下标读取sheetsheetb
浩浩 浩浩
3年前
golang 读取文件的四种方式
读文件读取的文件放在file/test:也就是file包下的test这个文件,里面写多一点文件读文件方式一:利用ioutil.ReadFile直接从文件读取到byte中funcRead0()(string){f,err:ioutil.ReadFile("file/test")iferrn
HCl4y HCl4y
3年前
XCTF hello_pwn
使用file查看文件是多少位Linux系统下的64位ELF文件用checksec检查文件保护没有canary保护IDA中汇编出伪C代码从unk_601068中读取10个字节,再读取dword_60106C中数据与1853186401比较,unk_601068,dword_60106C都是在段中exp打远程得到flag
Easter79 Easter79
3年前
Spring从MongoDB中下载文件之GridFS
问题之前提到过以GridFS方式上传问题到MongoDB中:Spring保存文件到MongoDB之GridFS支持(https://www.oschina.net/action/GoToLink?urlhttps%3A%2F%2Fwww.jianshu.com%2Fp%2Fd0265c0ab98a)。现在需要从Mongodb中读取文件,应该怎
Wesley13 Wesley13
3年前
FLV文件格式
1.        FLV文件对齐方式FLV文件以大端对齐方式存放多字节整型。如存放数字无符号16位的数字300(0x012C),那么在FLV文件中存放的顺序是:|0x01|0x2C|。如果是无符号32位数字300(0x0000012C),那么在FLV文件中的存放顺序是:|0x00|0x00|0x00|0x01|0x2C。2.  
Stella981 Stella981
3年前
Linux基本命令 vim命令(二)
LinuxVim显示行号在命令模式下输入":"进入编辑模式后执行setnu命令即可显示每一行的行号,如果想要取消行号,则再次输入":setnonu"即可。如果希望每次打开文件都默认显示行号,则可以编辑Vim的配置文件。每次使用Vim打开文件时,Vim都会到当前登录用户的宿主目录(用户配置文件所在地)中读取.vi
Wesley13 Wesley13
3年前
R语言 以打开文件的方式设置数据读取路径
直接运行下代码前两行,然后在本地选择你要读取的数据文件,然后运行第三行,即可成功读取数据。csvpath<file.choose()!(https://oscimg.oschina.net/oscnet/c180866ce0f95eee8b0c0520168dd71aa69.png)本文分享自微信公众号数据驱动实践(Data
风花雪月 风花雪月
1年前
Python访问数据库,也可以使用变量的方法
sqlite3连接fopen('config.ini','r',encoding'utf8')读取当前目录下文件。打开数据库的文件路径保存在config.inilinesf.readlines()读取所有行。默认每行最后一个为回车符,后面需要处理掉fir
小万哥 小万哥
1年前
Python 文件处理指南:打开、读取、写入、追加、创建和删除文件
文件处理是任何Web应用程序的重要部分。Python有多个用于创建、读取、更新和删除文件的函数。文件处理在Python中处理文件的关键函数是open()函数。open()函数接受两个参数:文件名和模式。有四种不同的方法(模式)可以打开文件:"r"读取默认值
小万哥 小万哥
10个月前
C 语言文件处理全攻略:创建、写入、追加操作解析
C语言中的文件处理在C语言中,您可以通过声明类型为FILE的指针,并使用fopen()函数来创建、打开、读取和写入文件:cFILEfptr;fptrfopen(filename,mode);FILE基本上是一个数据类型,我们需要创建一个指针变量来使用它(f