文章目录

  • fopen函数
    • 描述
    • 声明
    • 参数
    • 返回值
    • 实例
  • fwrite函数
    • 描述
    • 声明
    • 参数
    • 返回值
    • 实例
  • fread函数
    • 描述
    • 声明
    • 参数
    • 返回值
    • 实例
  • fclose函数
    • 描述
    • 声明
    • 参数
    • 返回值
    • 实例
  • 其余

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()

fread函数

描述

C 库函数 size_t fread(void *ptr, size_t size, size_t nmemb, FILE *stream) 从给定流 stream 读取数据到 ptr 所指向的数组中。

声明

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

size_t fread(void *ptr, size_t size, size_t nmemb, FILE *stream)

参数

ptr -- 这是指向带有最小尺寸 size*nmemb 字节的内存块的指针。
size -- 这是要读取的每个元素的大小,以字节为单位。
nmemb -- 这是元素的个数,每个元素的大小为 size 字节。
stream -- 这是指向 FILE 对象的指针,该 FILE 对象指定了一个输入流。

返回值

成功读取的元素总数会以 size_t 对象返回,size_t 对象是一个整型数据类型。如果总数与 nmemb 参数不同,则可能发生了一个错误或者到达了文件末尾。

实例

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

#include <stdio.h>
#include <string.h>int main()
{FILE *fp;char c[] = "This is runoob";char buffer[20];/* 打开文件用于读写 */fp = fopen("file.txt", "w+");/* 写入数据到文件 */fwrite(c, strlen(c) + 1, 1, fp);/* 查找文件的开头 */fseek(fp, 0, SEEK_SET);/* 读取并显示数据 */fread(buffer, strlen(c)+1, 1, fp);printf("%s\n", buffer);fclose(fp);return(0);
}

让我们编译并运行上面的程序,这将创建一个文件 file.txt,然后写入内容 This is runoob。接下来我们使用 fseek() 函数来重置写指针到文件的开头,文件内容如下所示:

This is runoob

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()

其余

fwrite 和 fread函数的用法小结

c语言 fopen、fwrite、fread、fclose函数(打开文件进行读写覆盖或追加)相关推荐

  1. c语言程序无法打开文件,C语言fopen()总是提示无法正常打开文件

    问题: 在windows系统命令行中运行编写的程序时,总是提示无法正常打开文件. 程序如下: //reducto.c //reduce the original file by 2/3 #includ ...

  2. matlab读int16读文件_Matlab文件操作及读txt文件(fopen,fseek,fread,fclose)

    Matlab 文件操作及读 txt 文件 (fopen,fseek,fread,fclose) matlab 文件操作 文件操作是一种重要的输入输出方式,即从数据文件读取数据或将 结果写入数据文件. ...

  3. fclose用法matlab,matlab文件操作及读txt文件(fopen,fseek,fread,fclose

    matlab文件操作及读txt文件(fopen,fseek,fread,fclose) matlab文件操作 文件操作是一种重要的输入输出方式,即从数据文件读取数据或将结果写入数据文件.MATLAB提 ...

  4. fopen是python内置函数吗_Python内置的open函数,打开文件的时候可能会产生异常_学小易找答案...

    [简答题]模仿操作一回. 上传JPG. [单选题]关于唐.宋诗之间的差异,缪钺.钱钟书.启功等学者都曾有过论述,请问以下哪一项评论出自钱钟书的<谈艺录>? [单选题]"羌笛何须怨 ...

  5. c语言中以追加只写方式打开文本文件,C语言文本方式和二进制方式打开文件区别...

    昨晚被@童老猪问到了两者的区别,我以前觉得自己大概搞懂了,昨晚发现还是没懂.今天查了一下资料,写下自己的理解,以备以后查阅. 我们都知道,文本文件和二进制文件在计算机上面都是以0,1存储的,那么两者怎 ...

  6. linux so lazyload,linux函数深入探索——open函数打开文件是否将文件内容加载到内存空间...

    转自:https://blog.csdn.net/qq_17019203/article/details/85051627 问题:open(2)函数打开文件是否将文件内容加载到内存空间 首先,文件打开 ...

  7. linux 内存中建立文件,linux函数深入探索——open函数打开文件是否将文件内容加载到内存空间...

    转自:https://blog.csdn.net/qq_17019203/article/details/85051627 问题:open(2)函数打开文件是否将文件内容加载到内存空间 首先,文件打开 ...

  8. python open函数用法_Python使用open函数打开文件的常用模式

    python 中open()的用法? open("/path/to/my/image.png", "rb") 中的'rb'代表了什么意思?所有试图感动你而做的事 ...

  9. linux下 c语言 用write open二进制写文件,Linux下用C语言fopen、fread和fwrite函数对二进制文件的操作-Go语言中文社区...

    一.前言 在做一个镜头的初始化操作,需要加载一个648*522像素大小的文件,厂商提供的是一个excel表,如果要加载数据,可用加载txt文本的方式,我选用二进制方式加载文件:大家都知道电脑真正执行的 ...

最新文章

  1. 单片机文件系统的学习
  2. Android典型界面设计(3)——访网易新闻实现双导航tab切换
  3. 不要手贱自己去通过Javascript画html界面
  4. 解决idea一直updating index
  5. 青少年迷恋上短视频 如何防沉迷?
  6. ppt扇形图怎么显示数据_PPT图表除了显示数据变化,还可以干嘛?
  7. 理解WidowManager
  8. redis设置零点过期,网站浏览量
  9. python bt_linux平台使用Python制作BT种子并获取BT种子信息的方法
  10. HarryPotter第一部—Aragog-1.0.2
  11. Jlink修复指南step by step指导(实践成功) 更新 适用win7-10
  12. 光驱刻录空盘提示函数不正确
  13. w8服务器dns修改,怎么修改DNS Win8修改DNS服务器地址的具体步骤图解
  14. Linux文件目录操作命令 rm
  15. 使用Microsoft SyncToy 文件同步/备份 自动化处理
  16. 最全Android 11新特性概览
  17. 小程序蓝牙BLE——自动连接设备(手环)
  18. ESP32-C3入门教程 基础篇(六、TIMG 硬件定时器 与 软件定时器)
  19. 零钱模拟器微信小程序源码下载
  20. keil C语言编程 位地址定义,Keil C编写下位机程序的小技巧和注意点

热门文章

  1. CMS:文章管理之视图(2)
  2. linux编程之pthread_create函数
  3. 扫地机器人腿是咕噜_扫地机器人|如何避免买到“智障”,看这篇
  4. Oracle数据库分组函数详解
  5. 为什么说OLAP产品毁了BI?
  6. ABAP 向上取整和向下取整 CEIL FLOOR
  7. 如何在ALV中输出标题头
  8. 2021年高薪城市排名,数据盘点哪些城市对打工人最友好?
  9. 2021年茅台销售现新套路,限价控价没有用?
  10. 剪映导出帧率选多少_剪映帧率怎么设置?剪映帧率设置方法