IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> C++知识库 -> 标准C语言12 -> 正文阅读

[C++知识库]标准C语言12

文件的分类:

????文本文件:?存储的是ASCII码的二进制(人能看懂)

????二进制文件:?存储的是数据的补码

文件IO:

????FILE*?fp?=?fopen(const?char*?path,const?char*?mode);

????功能:?打开或创建文件

????path:?文件的路径

????mode:?打开的模式

????????r???以只读权限打开文件,如果文件不存在则打开失败

????????r+??在r的基础上增加写权限

????????w???以只写权限打开文件,如果文件不存在则新建,如果文件存在就清空

????????w+??在w的基础上增加读权健

????????a???以只写权限打开文件,如果文件不存在则新建,如果文件存在则不清空,新写入的数据在文件的末尾

????????a+??在a的基础上增加读权限

????注意:?以上方式以文本形式操作文件,在它们基础上加b表示以二进制方式操作文件

????返回值:?结构指针,也称为文件指针,不需要关心它的成员,只需要知道它是操作文件的凭证,如果值是NULL表示文件操作失败

????int?fclose(FILE*?fp);

????功能:?关闭文件

????二进制方式读写文件:

????????fwrite

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

????????????????????功能:?把内存中的数据写入到文件中

????????????????????ptr:?内存首地址

????????????????????size:?一次写入多少个字节

????????????????????nmemb:?写入多少次

????????????????????stream:?文件指针,fopen的返回值

????????????????????返回值:?成功写入的次数

练习1:?定义一个教师结构体变量并初始化,以二进制形式写入文件中(以二进制方式写)

????

????????fread

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

????????????????????功能:?从文件中读取数据到内存中

????????????????????ptr:?存储从文件中读取的数据内存首地址

????????????????????size:?一次读取的字节

????????????????????nmemb:?读取多少次

????????????????????stream:?文件指针,fopen的返回值

????????????????????返回值:?成功读取到的次数

练习2:?从文件中读取数据到一个教师结构体变量中并显示(以二进制方式读)

????文本方式读写文件:

????????int?fprintf(FILE*?stream,const?char*?format,...);

????????功能:?以文本形式写入数据到文件中

????????stream:?要写入的文件

????????format:?占位符和提示信息

????????...:?变量列表

????????返回值:?成功写入的字节数

????????int?fscanf(FILE*?stream,const?char*?format,...);

????????功能:?从文件中读取数据到变量中

????????stream:?要读取的文件指针

????????format:?占位符

????????...:?变量地址列表

????????返回值:?成功读取到的变量个数

练习3:?定义一个教师结构体变量并初始化,以文本形式写入到文件中

练习4:?从文件中以文本形式读取到教师结构体中并显示

????文件的随机读写:

????????文件的位置指针:

????????????每个打开的文件都有一个指针记录着操作的位置,它会随着读写函数的执行而移动,以r、r+、w、w+模式打开文件位置指针在开头,以a、a+打开文件位置指针在文件末尾

????????如果想要随机读写文件的任意位置的数据,只需要手动设置文件的位置指针即可

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

????????功能:?设置文件的位置指针

????????stream:?要设置的文件

????????offset:?偏移值

????????whence:?基础位置

????????????SEEK_SET????文件开头

????????????SEEK_CUR????当前位置

????????????SEEK_END????文件末尾

????????返回值:?成功返回0、失败返回-1

????????void?rewind(FILE*?stream);

????????功能:?把文件位置指针设置到开头

????????long?ftell(FILE*?stream);

????????功能:?获取文件位置指针的位置

????????返回值:?第几个字节

????????int?feof(FILE*?stream);

????????功能:?检查文件位置指针是否到达末尾

????????返回值:?返回0说明到达文件末尾

????????char*?fgets(char*?s,int?size,FILE*?stream);

????????stdout:?从文件中读取一行字符串

????????int?fputs(const?char*s,FILE*?stream);

????????功能:?写入一个字符串到文件中,自动在末尾添加\n

????????返回值:?成功写入的字符个数

????????int?remove(const?char*?pathname);

????????功能:?删除文件

????????返回值:?成功返回0,失败返回-1

????????int?rename(const?char*?oldpath,const?char*?newpatch);

????????功能:?重命名文件

????????返回值:?成功返回0,失败返回-1

main函数的参数:

????是为了获取命令行附加的参数

????argc:?代表参数的个数

????argv:?每个字符串参数的首地址

????注意:?./a.out一定是第一个参数

练习5:?实现cp命令的功能

????cp?src?dest

????1、以r打开src文件,以w创建dest文件

????2、边读边写,知道文件读到末尾结束

????3、关闭文件

  C++知识库 最新文章
【C++】友元、嵌套类、异常、RTTI、类型转换
通讯录的思路与实现(C语言)
C++PrimerPlus 第七章 函数-C++的编程模块(
Problem C: 算法9-9~9-12:平衡二叉树的基本
MSVC C++ UTF-8编程
C++进阶 多态原理
简单string类c++实现
我的年度总结
【C语言】以深厚地基筑伟岸高楼-基础篇(六
c语言常见错误合集
上一篇文章      下一篇文章      查看所有文章
加:2021-10-28 12:13:13  更:2021-10-28 12:14:32 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 6:08:35-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码