c语言库函数的打开文件函数

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c语言库函数的打开文件函数相关的知识,希望对你有一定的参考价值。

参考技术A   c语言标准库中用于打开文件的函数是fopen()。
  函数原型:FILE
*
fopen(const
char
*
path,const
char
*
mode);
 

参数说明:path指明要打开的文件名,mode指明以什么方式打开。详细在下面介绍。
  返回值:文件顺利打开后,指向该流的文件指针就会被返回。如果文件打开失败则返回NULL,并把错误代码存在errno
中。示例如下
#include<stdio.h>

//根据需要修改成自己要打开的文件即可。
#define F_PATH "d:\\myfile\\file.dat"
int main(void)

FILE *fp=NULL;//需要注意
fp=fopen(F_PATH,"r"); //以只读方式打开一个文件
if(NULL==fp)

return -1;//要返回错误代码

fclose(fp); //打开一个文件停止操作后,要关闭打开的文件
fp=NULL;//需要指向空,否则会指向原打开文件地址

return 0;

  参数mode的类型:
  r
以只读方式打开文件,该文件必须存在。
  r+
以可读写方式打开文件,该文件必须存在。
  rb+
读写打开一个二进制文件,允许读写数据,文件必须存在。
  w
打开只写文件,若文件存在则文件长度清为0,即该文件内容会消失。若文件不存在则建立该文件。
  w+
打开可读写文件,若文件存在则文件长度清为零,即该文件内容会消失。若文件不存在则建立该文件。
  a
以附加的方式打开只写文件。若文件不存在,则会建立该文件,如果文件存在,写入的数据会被加到文件尾,即文件原先的内容会被保留。(EOF符保留)
  a+
以附加方式打开可读写的文件。若文件不存在,则会建立该文件,如果文件存在,写入的数据会被加到文件尾后,即文件原先的内容会被保留。
(原来的EOF符不保留)
  wb
只写打开或新建一个二进制文件;只允许写数据。
  wb+
读写打开或建立一个二进制文件,允许读和写。
  ab+
读写打开一个二进制文件,允许读或在文件末追加数据。

c语言 fopenfwritefclose函数(打开文件进行读写覆盖或追加)

fopen函数

描述

C 库函数 FILE *fopen(const char *filename, const char *mode) 使用给定的模式 mode 打开 filename 所指向的文件。

声明

下面是 fopen() 函数的声明。

FILE *fopen(const char *filename, const char *mode)

参数

  • filename – 这是 C 字符串,包含了要打开的文件名称。
  • mode – 这是 C 字符串,包含了文件访问模式,模式如下:
模式		描述
"r"			打开一个用于读取的文件。该文件必须存在。
"w"			创建一个用于写入的空文件。如果文件名称与已存在的文件相同,则会删除已有文件的内容,文件被视为一个新的空文件。
"a"			追加到一个文件。写操作向文件末尾追加数据。如果文件不存在,则创建文件。
"r+"		打开一个用于更新的文件,可读取也可写入。该文件必须存在。
"w+"		创建一个用于读写的空文件。
"a+"		打开一个用于读取和追加的文件。

如果是wb+,则表示以二进制(读写)方式写入,参考:fopen中w w+ wb区别

“rt”      只读打开一个文本文件,只允许读数据

“wt”      只写打开或建立一个文本文件,只允许写数据

“at”      追加打开一个文本文件,并在文件末尾写数据

“rb”      只读打开一个二进制文件,只允许读数据

“wb”       只写打开或建立一个二进制文件,只允许写数据

“ab”       追加打开一个二进制文件,并在文件末尾写数据

“rt+”      读写打开一个文本文件,允许读和写

“wt+”      读写打开或建立一个文本文件,允许读写

“at+”     读写打开一个文本文件,允许读,或在文件末追加数据

“rb+”      读写打开一个二进制文件,允许读和写

“wb+”      读写打开或建立一个二进制文件,允许读和写

“ab+”      读写打开一个二进制文件,允许读,或在文件末追加数据

对于文件使用方式有以下几点说明:

  1. 文件使用方式由r,w,a,t,b,+六个字符拼成,各字符的含义是:

  r(read): 读

  w(write): 写

  a(append): 追加

  t(text): 文本文件,可省略不写

  b(banary): 二进制文件

  +: 读和写

  2. 凡用“r”打开一个文件时,该文件必须已经存在,且只能从该文件读出。

  3. 用“w”打开的文件只能向该文件写入。若打开的文件不存在,则以指定的文件名建立该文件,若打开的文件已经存在,则将该文件删去,重建一个新文件。

  4. 若要向一个已存在的文件追加新的信息,只能用“a ”方式打开文件。但此时该文件必须是存在的,否则将会出错。

  5. 在打开一个文件时,如果出错,fopen将返回一个空指针值NULL。在程序中可以用这一信息来判别是否完成打开文件的工作,并作相应的处理。如果成功的打开一个文件, fopen()函数返回文件指针, 否则返回空指针

(NULL)。由此可判断文件打开是否成功。 fclose()函数用来关闭一个由fopen()函数打开的文件 , 其调用格式为:

      int fclose(FILE *stream);

    该函数返回一个整型数。当文件关闭成功时, 返回0, 否则返回一个非零值。

可以根据函数的返回值判断文件是否关闭成功。

参考文章:fopen 参数讲解

返回值

该函数返回一个 FILE 指针。否则返回 NULL,且设置全局变量 errno 来标识错误。

实例

下面的实例演示了 fopen() 函数的用法。

#include <stdio.h>
#include <stdlib.h>

int main()

   FILE * fp;

   fp = fopen ("file.txt", "w+");
   fprintf(fp, "%s %s %s %d", "We", "are", "in", 2014);
   
   fclose(fp);
   
   return(0);

让我们编译并运行上面的程序,这将创建一个带有一下内容的文件 file.txt:

We are in 2014

现在让我们使用下面的程序查看上面文件的内容:

#include <stdio.h>

int main ()

   FILE *fp;
   int c;
  
   fp = fopen("file.txt","r");
   while(1)
   
      c = fgetc(fp);
      if( feof(fp) )
       
          break ;
      
      printf("%c", c);
   
   fclose(fp);
   return(0);

参考文章:C 库函数 - fopen()

fwrite函数

描述

C 库函数 size_t fwrite(const void *ptr, size_t size, size_t nmemb, FILE *stream) 把 ptr 所指向的数组中的数据写入到给定流 stream 中。

声明

下面是 fwrite() 函数的声明。

size_t fwrite(const void *ptr, size_t size, size_t nmemb, FILE *stream)

参数

ptr 	-- 这是指向要被写入的元素数组的指针。
size 	-- 这是要被写入的每个元素的大小,以字节为单位。
nmemb 	-- 这是元素的个数,每个元素的大小为 size 字节。
stream 	-- 这是指向 FILE 对象的指针,该 FILE 对象指定了一个输出流。

返回值

如果成功,该函数返回一个 size_t 对象,表示元素的总数,该对象是一个整型数据类型。如果该数字与 nmemb 参数不同,则会显示一个错误。

实例

  • 下面的实例演示了 fwrite() 函数的用法。
#include<stdio.h>
 
int main ()

   FILE *fp;
   char str[] = "This is runoob.com";
 
   fp = fopen( "file.txt" , "w" );
   fwrite(str, sizeof(str) , 1, fp );
 
   fclose(fp);
  
   return(0);

让我们编译并运行上面的程序,这将创建一个文件 file.txt,它的内容如下:

This is runoob.com
  • 现在让我们使用下面的程序查看上面文件的内容:
#include <stdio.h>
 
int main ()

   FILE *fp;
   int c;
 
   fp = fopen("file.txt","r");
   while(1)
   
      c = fgetc(fp);
      if( feof(fp) )
      
          break;
      
      printf("%c", c);
   
   fclose(fp);
   return(0);

参考文章:C 库函数 - fwrite()

fclose函数

描述

C 库函数 int fclose(FILE *stream) 关闭流 stream。刷新所有的缓冲区。

声明

下面是 fclose() 函数的声明。

int fclose(FILE *stream)

参数

  • stream – 这是指向 FILE 对象的指针,该 FILE 对象指定了要被关闭的流。

返回值

如果流成功关闭,则该方法返回零。如果失败,则返回 EOF。

实例

下面的实例演示了 fclose() 函数的用法。

#include <stdio.h>

int main()

   FILE *fp;
 
   fp = fopen("file.txt", "w");

   fprintf(fp, "%s", "这里是 runoob.com");
   fclose(fp);
   
   return(0);

让我们编译并运行上面的程序,这将创建一个文件 file.txt,然后写入下面的文本行,最后使用 fclose() 函数关闭文件。

这里是 runoob.com

参考文章:C 库函数 - fclose()

以上是关于c语言库函数的打开文件函数的主要内容,如果未能解决你的问题,请参考以下文章

c语言 fopenfwritefclose函数(打开文件进行读写覆盖或追加)

能列举些C语言中比较常见重要库函数的用法吗?

C语言中的fopen函数的具体实现是怎么样?

C语言文件的相关操作

C语言怎样对文件进行操作

在C语言里标准函数存放在啥文件中?