菜单
×
   ❮   
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 读取文件


读取文件

在上一章中,我们在 fopen() 函数中使用 wa 模式写入了文件。

要从文件中读取内容,您可以使用 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!

运行示例 »


×

联系销售

如果您想将 W3Schools 服务用于教育机构、团队或企业,请发送电子邮件给我们
sales@w3schools.com

报告错误

如果您想报告错误,或想提出建议,请发送电子邮件给我们
help@w3schools.com

W3Schools 经过优化,旨在方便学习和培训。示例可能经过简化,以提高阅读和学习体验。教程、参考资料和示例会不断审查,以避免错误,但我们无法保证所有内容的完全正确性。使用 W3Schools 即表示您已阅读并接受我们的使用条款Cookie 和隐私政策

版权所有 1999-2024 Refsnes Data。保留所有权利。W3Schools 由 W3.CSS 提供支持