标准C库对文件的操作

2024-05-09 18:20
文章标签 操作 标准 库对

本文主要是介绍标准C库对文件的操作,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

fopen

由于是标准C库,因此头文件只需包含#include <stdio.h>即可
fopen的api有三个
FILE *fopen(const char *path, const char *mode);
FILE *fdopen(int fd, const char *mode);
FILE *freopen(const char *path, const char *mode, FILE *stream);
常用的是第一个:**FILE *fopen(const char path, const char mode);

const char *path

文件的路径

const char *mode

char 要加引号!!!
以什么参数打开文件
“r” :以只读方式打开文件,该文件必须存在。
“w” :打开只写文件,若文件存在则文件长度清为0,即该文件内容会消失。若文件不存在则建立该文件。
“a” :以附加的方式打开只写文件。若文件不存在,则会建立该文件,如果文件存在,写入的数据会被加到文件尾,即文件原先的内容会被保留。(EOF符保留)
“r+” :以可读写方式打开文件,该文件必须存在。
“w+” :打开可读写文件,若文件存在则文件长度清为零,即该文件内容会消失。若文件不存在则建立该文件。
“a+”:以附加方式打开可读写的文件。若文件不存在,则会建立该文件,如果文件存在,写入的数据会被加到文件尾后,即文件原先的内容会被保留。 (原来的EOF符不保留)

fwrite

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

const void *ptr

把哪里的数据写入

size_t size

单个写入类型的大小

size_t nmemb

写入的次数

FILE *stream

写到哪个文件

返回值为第三个参数size_t nmemb即写入的次数

fread

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

void *ptr

读到哪里

size_t size

读入类型的大小

size_t nmemb

读入的个数/次数

FILE *stream

从哪个文件里读

返回值为第三个参数size_t nmemb即读入的次数

fseek

*int fseek(FILE stream, long offset, int whence);

FILE *stream

哪个文件

long offset

偏移量

int whence

SEEK_SET 开头
SEEK_END 结尾
SEEK_CUR 当前位置

基本的打开文件,读写文件操作:

#include <stdio.h>
#include <string.h>int main(){char* str="hello world";FILE *fp;char readBuf[128]={"\0"};fp = fopen("./wang.txt","w+");	//注意第二个参数是引号fwrite(str,sizeof(char),strlen(str),fp);	//也可以一次写入那么多数据,下方读数据也同样fwrite(str,sizeof(char)*strlen(str),1,fp);fseek(fp,0,SEEK_SET);	//将光标返回头部fread(readBuf,sizeof(char),strlen(str),fp);printf("read data:%s\n",readBuf);return 0;
}

其实概念跟之前的open,write都是一样的,只不过这个是标准C库的API

fclose

*int fclose(FILE fp);
fclose比较简单,就是传入一个文件描述符即可。

fputc

*int fputc(int c, FILE stream);
将C(可以是字符)写入某个文件中:

#include <stdio.h>int main(){FILE* fp;char *str = "hello world!";fp = fopen("./test.txt","w+");//int fputc(int c, FILE *stream);while(*str != '\0'){fputc(*str,fp);str++;}fclose(fp);return 0;
}

fgetc

*int fgetc(FILE stream);

feof

*int feof(FILE stream);

写入一个结构体到文件中

#include <string.h>
#include <stdlib.h>
#include <stdio.h>struct Test{int a;char c;
};int main(){FILE *fp;struct Test data1 = {10,'a'};struct Test data2;fp = fopen("./wang.txt","w+");int n_write = fwrite(&data1,sizeof(struct Test),1,fp);fseek(fp,0,SEEK_SET);int n_read = fread(&data2,sizeof(struct Test),1,fp);printf("read:%d %c\n",data2.a,data2.c);fclose(fp);return 0;
}

这篇关于标准C库对文件的操作的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/974141

相关文章

Python正则表达式匹配和替换的操作指南

《Python正则表达式匹配和替换的操作指南》正则表达式是处理文本的强大工具,Python通过re模块提供了完整的正则表达式功能,本文将通过代码示例详细介绍Python中的正则匹配和替换操作,需要的朋... 目录基础语法导入re模块基本元字符常用匹配方法1. re.match() - 从字符串开头匹配2.

Java实现在Word文档中添加文本水印和图片水印的操作指南

《Java实现在Word文档中添加文本水印和图片水印的操作指南》在当今数字时代,文档的自动化处理与安全防护变得尤为重要,无论是为了保护版权、推广品牌,还是为了在文档中加入特定的标识,为Word文档添加... 目录引言Spire.Doc for Java:高效Word文档处理的利器代码实战:使用Java为Wo

sysmain服务可以禁用吗? 电脑sysmain服务关闭后的影响与操作指南

《sysmain服务可以禁用吗?电脑sysmain服务关闭后的影响与操作指南》在Windows系统中,SysMain服务(原名Superfetch)作为一个旨在提升系统性能的关键组件,一直备受用户关... 在使用 Windows 系统时,有时候真有点像在「开盲盒」。全新安装系统后的「默认设置」,往往并不尽编

Python自动化处理PDF文档的操作完整指南

《Python自动化处理PDF文档的操作完整指南》在办公自动化中,PDF文档处理是一项常见需求,本文将介绍如何使用Python实现PDF文档的自动化处理,感兴趣的小伙伴可以跟随小编一起学习一下... 目录使用pymupdf读写PDF文件基本概念安装pymupdf提取文本内容提取图像添加水印使用pdfplum

Python从Word文档中提取图片并生成PPT的操作代码

《Python从Word文档中提取图片并生成PPT的操作代码》在日常办公场景中,我们经常需要从Word文档中提取图片,并将这些图片整理到PowerPoint幻灯片中,手动完成这一任务既耗时又容易出错,... 目录引言背景与需求解决方案概述代码解析代码核心逻辑说明总结引言在日常办公场景中,我们经常需要从 W

使用Python的requests库来发送HTTP请求的操作指南

《使用Python的requests库来发送HTTP请求的操作指南》使用Python的requests库发送HTTP请求是非常简单和直观的,requests库提供了丰富的API,可以发送各种类型的HT... 目录前言1. 安装 requests 库2. 发送 GET 请求3. 发送 POST 请求4. 发送

Python使用python-pptx自动化操作和生成PPT

《Python使用python-pptx自动化操作和生成PPT》这篇文章主要为大家详细介绍了如何使用python-pptx库实现PPT自动化,并提供实用的代码示例和应用场景,感兴趣的小伙伴可以跟随小编... 目录使用python-pptx操作PPT文档安装python-pptx基础概念创建新的PPT文档查看

MySQL 数据库表操作完全指南:创建、读取、更新与删除实战

《MySQL数据库表操作完全指南:创建、读取、更新与删除实战》本文系统讲解MySQL表的增删查改(CURD)操作,涵盖创建、更新、查询、删除及插入查询结果,也是贯穿各类项目开发全流程的基础数据交互原... 目录mysql系列前言一、Create(创建)并插入数据1.1 单行数据 + 全列插入1.2 多行数据

MySQL 临时表与复制表操作全流程案例

《MySQL临时表与复制表操作全流程案例》本文介绍MySQL临时表与复制表的区别与使用,涵盖生命周期、存储机制、操作限制、创建方法及常见问题,本文结合实例代码给大家介绍的非常详细,感兴趣的朋友跟随小... 目录一、mysql 临时表(一)核心特性拓展(二)操作全流程案例1. 复杂查询中的临时表应用2. 临时

MySQL 数据库表与查询操作实战案例

《MySQL数据库表与查询操作实战案例》本文将通过实际案例,详细介绍MySQL中数据库表的设计、数据插入以及常用的查询操作,帮助初学者快速上手,感兴趣的朋友跟随小编一起看看吧... 目录mysql 数据库表操作与查询实战案例项目一:产品相关数据库设计与创建一、数据库及表结构设计二、数据库与表的创建项目二:员