C和C++中函数的用法与实例

C语言与C++程序设计语言 fopen() 函数用于打开文件并对数据进行添加、更新、创建等操作。在本教程中,我们将学习有关 fopen() 功能。

null

fopen()函数语法

fopen() 函数由标准C库提供。fopen()函数具有以下语法。

FILE *fopen(const char *FILENAME, const char *MODE)
  • `FILE*`是fopen()函数的返回类型,它是指向文件结构的指针。此文件指针用于添加、更新等操作。
  • `const char*FILENAME`只是fopen()函数将打开的文件名。
  • `const char*MODE`是文件打开模式,它将设置文件操作的行为,如只读、写、追加等。

函数将返回一个指向成功执行时打开的文件的文件指针。如果有错误,返回值将为NULL,全局变量 errno 将为相关错误设置。

文件打开模式

在开始fopen()函数的示例之前,我们将学习文件打开模式。文件打开模式设置和限制文件访问类型,如只读、更新、不存在时创建文件等。文件模式用字符和+号表示。

  • `“r”`用作读取文件。这将以只读方式打开文件,并且在此模式下无法编辑该文件。正如预期的那样,文件应该存在于不会自动创建的位置。
  • `“w”`将创建一个空文件进行写入。如果文件已经存在,现有文件将被删除或擦除,新的空文件将被使用。使用这些选项时要小心。
  • `“a”`用于将新数据追加到指定的文件中。如果文件不存在,将创建该文件。
  • `“r+”`模式将打开要更新的文件,该文件将提供读写权限。但文件必须已经存在,否则将不会创建并抛出错误。
  • `“w+”`将为读取和写入创建一个空文件。
  • `“a+”`将打开一个文件进行读取和追加。

相关文章: 文件操作,在C中打开、写入和关闭文件

打开文件进行读取

我们将从一个简单的示例开始,在这个示例中,我们将打开一个名为 myfile.txt 这是一个文本文件。但请记住,文件的类型或内容对于fopen()函数并不重要。

#include int main () {   //File pointer for "myfile.txt"   FILE *fp;   int c;   //Open the file and set to pointer fp   fp = fopen("myfile.txt","r");   //Read file character by character and    //put to the standard ouput   while(1) {      c = fgetc(fp);      if( feof(fp) ) {         break ;      }      printf("%c", c);   }   //Close the file pointer   fclose(fp);   return(0);}

图片[1]-C和C++中函数的用法与实例-yiteyi-C++库

我们将编译源代码文件 read_myfile.c 以下是 gcc 命令。

$ gcc read_myfile.c -o read_myfile

图片[2]-C和C++中函数的用法与实例-yiteyi-C++库

打开文件进行写入

我们也可以使用 "a" 用于写入或附加到现有文件中。在本例中,我们将添加以下名为 myfile.txt .

I am new line
#include int main () {   //File pointer for "myfile.txt"   FILE *fp;   int c;   //Open the file and set to pointer fp   fp = fopen("myfile.txt","a");   //Add or append new line to myfile.txt   // by using fp pointer   fputs("I am a new line",fp);   //Close the file pointer   fclose(fp);   return(0);}

关闭文件

由于fopen()函数用于在操作完成后打开文件,因此我们必须关闭该文件。 fclose() 函数用于使用此文件指针关闭给定文件并释放资源。在前面的示例中,作为最后一个操作,我们关闭了如下所示的文件。

fclose(fp);

fopen()错误

使用fopen()函数打开文件时,可能会出现不同类型的错误。在这里,我们将提供一些最可能的。

  • `EACCES`与没有指定操作权限的位置相关。
  • `当mode参数的值无效时,EINVAL`将引发。
  • `EINTR`在fopen()期间捕获到信号时将升高。

相关文章: 什么是EOF(文件结尾)?PHP、C++、C、Python、java的例子

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享