❮ 上一节
下一节 ❯
C 读取文件
更新于 2025/12/5 10:52:17
读取文件
在上一章中,我们使用 w 和 a 模式在 fopen() 函数中写入文件。
要从文件中读取数据,可以使用 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("Not able to open the
file.");}// 关闭此文件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("Not able to open the file.");}// 关闭此文件
fclose(fptr);
Hello World!
Hi everybody!
运行示例 »
注意:您将在NULL 章节中了解更多关于NULL的内容。
❮ 上一节
下一节 ❯