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

C 语言中的文件读取

要从文件读取,可以使用 r 模式:

1FILE *fptr; 2 3// 以读取模式打开文件 4fptr = fopen("filename.txt", "r");

这将使 filename.txt 打开以进行读取。

在 C 中读取文件需要一点工作。坚持住!我们将一步一步地指导您。

接下来,我们需要创建一个足够大的字符串来存储文件的内容。

例如,让我们创建一个可以存储多达 100 个字符的字符串:

1FILE *fptr; 2 3// 以读取模式打开文件 4fptr = fopen("filename.txt", "r"); 5 6// 存储文件的内容 7char myString[100];

为了读取 filename.txt 的内容,我们可以使用 fgets() 函数。

fgets() 函数接受三个参数:

1fgets(myString, 100, fptr);
  • 第一个参数指定要存储文件内容的位置,它将位于我们刚刚创建的 myString 数组中。
  • 第二个参数指定要读取的最大数据大小,它应该与 myString 的大小 (100) 匹配。
  • 第三个参数需要一个用于读取文件的文件指针(示例中的 fptr)。

现在,我们可以打印字符串,它将输出文件的内容:

1FILE *fptr; 2 3// 以读取模式打开文件 4fptr = fopen("filename.txt", "r"); 5 6// 存储文件的内容 7char myString[100]; 8 9// 读取内容并将其存储在 myString 中 10fgets(myString, 100, fptr); 11 12// 打印文件内容 13printf("%s", myString); 14 15// 关闭文件 16fclose(fptr); 17 18Hello World!

运行示例 »

注意:fgets() 函数只会读取文件的第一行。如果您还记得,filename.txt 中有两行文本。

要读取文件的每一行,您可以使用 while 循环:

1FILE *fptr; 2 3// 以读取模式打开文件 4fptr = fopen("filename.txt", "r"); 5 6// 存储文件的内容 7char myString[100]; 8 9// 读取内容并打印 10while(fgets(myString, 100, fptr)) { 11 printf("%s", myString); 12} 13 14// 关闭文件 15fclose(fptr); 16 17Hello World! 18Hi everybody!

运行示例 »

良好实践

如果您尝试打开不存在的用于读取的文件,fopen() 函数将返回 NULL。

提示:作为一种良好的实践,我们可以使用 if 语句测试 NULL,并在文件不存在时打印一些文本:

1FILE *fptr; 2 3// 以读取模式打开文件 4fptr = fopen("loremipsum.txt", "r"); 5 6// 如果文件不存在,打印一些文本 7if(fptr == NULL) { 8 printf("无法打开文件。"); 9} 10 11// 关闭文件 12fclose(fptr);

如果文件不存在,则会打印以下文本:

无法打开文件。

运行示例 »

考虑到这一点,如果我们再次使用上面的“读取文件”示例,我们可以创建更可持续的代码:

1FILE *fptr; 2 3// 以读取模式打开文件 4fptr = fopen("filename.txt", "r"); 5 6// 存储文件的内容 7char myString[100]; 8 9// 如果文件存在 10if(fptr != NULL) { 11 12 // 读取内容并打印 13 while(fgets(myString, 100, fptr)) { 14 printf("%s", myString); 15 } 16 17// 如果文件不存在 18} else { 19 printf("无法打开文件。"); 20} 21 22// 关闭文件 23fclose(fptr); 24 25Hello World! 26Hi everybody!

C 语言中的结构体 (structs)

结构体(也称为 structs)是一种将多个相关变量组合到一起的方法。结构体中的每个变量称为结构体的“成员”。

与数组不同,结构体可以包含许多不同的数据类型 (int, float, char 等)。

创建结构体

您可以使用 struct 关键字并用花括号声明其每个成员来创建结构体:

1struct MyStructure { // 结构体声明 2 int myNum; // 成员 (int 变量) 3 char myLetter; // 成员 (char 变量) 4}; // 以分号结束结构体

要访问结构体,您必须创建一个变量。

在 main() 方法中使用 struct 关键字,后跟结构体的名称和结构体变量的名称:

创建名为 "s1" 的结构体变量:

1struct MyStructure { 2 int myNum; 3 char myLetter; 4}; 5 6int main() { 7 struct MyStructure s1; 8 return 0; 9}

最后

为了方便其他设备和平台的小伙伴观看往期文章:

微信公众号搜索:Let us Coding,关注后即可获取最新文章推送

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

点赞
收藏

评论区

加载中...

相关推荐

python读取excel数据转为json格式

做自动化时需要从excel读取数据;本文实现将excel文件数据读取为json格式,方便自动化调用读取xls文件使用xlrd读取xls文件代码:pythonimportxlrddefreadxls(file):实例化excelbookxlrd.openworkbook(file)下标读取sheetsheetb

golang 读取文件的四种方式

读文件读取的文件放在file/test:也就是file包下的test这个文件,里面写多一点文件读文件方式一:利用ioutil.ReadFile直接从文件读取到byte中funcRead0()(string){f,err:ioutil.ReadFile("file/test")iferrn

XCTF hello_pwn

使用file查看文件是多少位Linux系统下的64位ELF文件用checksec检查文件保护没有canary保护IDA中汇编出伪C代码从unk_601068中读取10个字节,再读取dword_60106C中数据与1853186401比较,unk_601068,dword_60106C都是在段中exp打远程得到flag

Spring从MongoDB中下载文件之GridFS

问题之前提到过以GridFS方式上传问题到MongoDB中:Spring保存文件到MongoDB之GridFS支持(https://www.oschina.net/action/GoToLink?urlhttps%3A%2F%2Fwww.jianshu.com%2Fp%2Fd0265c0ab98a)。现在需要从Mongodb中读取文件,应该怎

FLV文件格式

1.        FLV文件对齐方式FLV文件以大端对齐方式存放多字节整型。如存放数字无符号16位的数字300(0x012C),那么在FLV文件中存放的顺序是:|0x01|0x2C|。如果是无符号32位数字300(0x0000012C),那么在FLV文件中的存放顺序是:|0x00|0x00|0x00|0x01|0x2C。2.  

Linux基本命令 vim命令(二)

LinuxVim显示行号在命令模式下输入":"进入编辑模式后执行setnu命令即可显示每一行的行号,如果想要取消行号,则再次输入":setnonu"即可。如果希望每次打开文件都默认显示行号,则可以编辑Vim的配置文件。每次使用Vim打开文件时,Vim都会到当前登录用户的宿主目录(用户配置文件所在地)中读取.vi