当前位置: 首页 > news >正文

C库函数文件操作(fopen、fread、fwrite、fclose)

C库函数

C文件操作用库函数实现,包含在stdio.h中,系统自动打开和关闭三个标准文件:

  • 标准输入-键盘(stdin)
  • 标准输出-显示器(stdout)
  • 标准出错输出-显示器(stderr)

文件打开—fopen()

函数原型:

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

该函数使用给定的模式 mode 打开 filename 所指向的文件。其中mode值为以下:

文件使用方式含义
“r”打开一个用于读取的文件。该文件必须存在。
“w”创建一个用于写入的空文件。如果文件名称与已存在的文件相同,则会删除已有文件的内容,文件被视为一个新的空文件。
“a”追加到一个文件。写操作向文件末尾追加数据。如果文件不存在,则创建文件。
“r+”打开一个用于更新的文件,可读取也可写入。该文件必须存在。
“w+”创建一个用于读写的空文件。
“a+”打开一个用于读取和追加的文件。

返回值:该函数返回一个 指向文件结构体的FILE 指针。否则返回 NULL,且设置全局变量 errno 来标识错误。

文件读/写

函数原型:

size_t fread ( void *ptr, size_t size, size_t count, FILE *fp );
size_t fwrite ( void *ptr, size_t size, size_t count, FILE *fp );

fread() 函数用来从指定文件中读取块数据。所谓块数据,也就是若干个字节的数据,可以是一个字符,可以是一个字符串,可以是多行数据,并没有什么限制。对参数的说明:

  • ptr 为内存区块的指针,它可以是数组、变量、结构体等。fread() 中的 ptr 用来存放读取到的数据,fwrite() 中的 ptr 用来存放要写入的数据。
  • size:表示每个数据块的字节数。
  • count:表示要读写的数据块的块数。
  • fp:表示文件指针。

理论上,每次读写 size*count 个字节的数据。

返回值:返回成功读写的块数,也即 count
如果返回值小于 count:

  • 对于 fwrite() 来说,肯定发生了写入错误,可以用 ferror() 函数检测。
  • 对于 fread() 来说,可能读到了文件末尾,可能发生了错误,可以用 ferror()feof() 检测。

文件关闭—fclose()

函数原型:fclose(fp)
作用:关闭fp指向的文件,使文件指针变量与文件“脱销”,释放文件结构体和文件指针。正常关闭返回0;出错时返回非0;

C库函数读写文件示例

编程,打开文件a.txt,将文件中的内容复制到文件c.txt中

#include<stdio.h>
#include<stdlib.h>
#include<fcntl.h> //文件信息控制
#define count 1 //数据块的个数
int main(int args,char*argv[])
{FILE *fp1,*fp2;long len=0;char *p;p=(char*)malloc(sizeof(char)*count);fp1=fopen("a.txt","r"); //以只读方式打开文件if(fp1==NULL){printf("Open a.txt fail!");exit(1);}fp2=fopen("c.txt","w+");if(fp2==NULL){printf("Open c.txt fail!");exit(1);}while(fread(p,sizeof(char),count,fp1)==1) //读取一个字符{fwrite(p,sizeof(char),count,fp2);len++;}fclose(fp1);fclose(fp2);free(p); //释放空间return 0;
}
http://www.lryc.cn/news/1999.html

相关文章:

  • 【Java|golang】1798. 你能构造出连续值的最大数目
  • VB 消息、消息队列、事件
  • Linux实用指令记录
  • Jetpack Compose中的绘制流程和自定义布局
  • 笔试题-2023-芯动-数字IC设计【纯净题目版】
  • 高压放大器在孔道灌浆非线性超声测试中的应用
  • vue3响应式原理
  • c/c++开发,无可避免的宏定义使用案例
  • SaaS的阴暗面:网络攻击武器化、平民化
  • 『CV学习笔记』图像处理透视变换(Python+Opencv)
  • 使用Fetch时,post数据时,后端接收的Content-Type为text/plain
  • 大型智慧校园系统源码 智慧校园源码 Android电子班牌源码
  • 【MySQL】你知道的MySQL中的集合函数有哪些呢?
  • 科目一罚款题
  • Maven中央仓库地址大全
  • 人工智能的未来———因果推理what if 第11章(统计模型) 文章解读
  • 百度贴吧发帖软件如何发布?
  • 如何成为java架构师?2023版Java架构师学习路线总结完成,真实系统有效,一切尽在其中
  • tkinter 实现选择文件夹或者多个文件
  • 深圳活动会议媒体邀约,电视台,网媒媒体资源
  • JDBC与Druid连接池
  • java易错题锦集二
  • 11.hadoop系列之MapReduce框架原理之InputFormat数据输入
  • LoadRunner
  • 笔试题-2023-芯原-数字前端设计or验证【纯净题目版】
  • 【软件测试】资深测试工程师说:你真的能做好bug分析吗?
  • NLP模型检查英语语法错误
  • Echarts的Category轴滑动
  • 04 react css上下浮动动画效果
  • 关于线程池