Menu
×
   ❮   
HTML CSS JAVASCRIPT SQL PYTHON JAVA PHP HOW TO W3.CSS C C++ C# BOOTSTRAP REACT MYSQL JQUERY EXCEL XML DJANGO NUMPY PANDAS NODEJS R TYPESCRIPT ANGULAR GIT POSTGRESQL MONGODB ASP AI GO KOTLIN SASS VUE DSA GEN AI SCIPY AWS CYBERSECURITY DATA SCIENCE
     ❯   

C 读取文件


读取文件

在上一章中,我们使用 wa 模式在 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);
  1. 第一个参数指定存储文件内容的位置,该内容将位于我们刚刚创建的 myString 数组中。
  2. 第二个参数指定要读取数据的最大大小,该大小应与 myString 的大小 (100) 相匹配。
  3. 第三个参数需要一个用于读取文件的 文件指针 (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!

运行示例 »


×

Contact Sales

If you want to use W3Schools services as an educational institution, team or enterprise, send us an e-mail:
[email protected]

Report Error

If you want to report an error, or if you want to make a suggestion, send us an e-mail:
[email protected]

W3Schools is optimized for learning and training. Examples might be simplified to improve reading and learning. Tutorials, references, and examples are constantly reviewed to avoid errors, but we cannot warrant full correctness of all content. While using W3Schools, you agree to have read and accepted our terms of use, cookie and privacy policy.

Copyright 1999-2024 by Refsnes Data. All Rights Reserved. W3Schools is Powered by W3.CSS.