| |
|
开发:
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/C++的第二十二天 文件读写 -> 正文阅读 |
|
[C++知识库]从零开始 学习C/C++的第二十二天 文件读写 |
11.30 枚举:enum ? ? 枚举是一种数据类型,把可能出现的值一一罗列出来,并给其起有意义的名字,如果给该类型的变量赋其它的数值则认为是非法的(愿望) ? ? ? ? enum 枚举名 ? ? { ? ? ? ? 成员名=val, ? ? ? ? ... ? ? }; ? ? 枚举可以看做是一种值受限的int类型,但是c编译器为了效率并不检查,所以C语言中枚举可以当做int类型变量一样使用(锦上添花) ? ? 如果不给成员值,枚举成员的值默认从0开始,依次+1,如果中间某个成员设置了值,后面的成员在它的基础上依次+1 ? ? 为什么要使用枚举: ? ? ? ? 可以给无意义的数值起有意义的名字,可以提高代码的可读性,比宏常量相对安全一些 文件IO: ? ? ? ? 文件的分类: ? ? ? ? 文本文件: ? ? ?人能看得懂的文件,存储的是ASCII码的二进制 ? ?'2''5''5' '2' -> 50的二进制 ? ? ? ? 二进制文件: ? ?存储的是数据的二进制 ? ?255 ? ? ? ? FILE *fopen(const char *pathname, const char *mode); ? ? 功能:打开或创建文件 ? ? path:文件的路径 ? ? mode:打开模式 ? ? ? ? r ? ? ? 以只读权限打开文件,如果不存在则打开失败 ? ? ? ? r+ ? ? ?在r的基础上增加写权限 ? ? ? ? w ? ? ? 以只写权限打开文件,如果不存在则新建,如果文件已存在则清空打开 ? ? ? ? w+ ? ? ?在w的基础上增加读权限 ? ? ? ? a ? ? ? 以只写权限打开文件,如果不存在则新建,如果文件已存在则新写入的数据在文件的末尾 ? ? ? ? a+ ? ? ?在a的基础上增加读权限 ? ? ? ? 注意:以上六种模式都是以文本模式操作文件,在它们的基础上后面加b表示以二进制方式操作文件 ? ? 返回值:结构指针,不需要关心它的成员,只需要知道它是操作文件的凭证即可 ? ? 二进制方式读写: ? ? size_t fwrite(const void *ptr, size_t size, size_t nmemb,FILE *stream); ? ? 功能:把内存中的数据写入文件中 ? ? ptr:要写入的内存的首地址 ? ? size:一次要写多少个字节 ? ? nmemb:要写入多少次 ? ? stream:文件指针,要写入的文件,fopen的返回值 ? ? 返回值:成功写入的字节数 ? ? size_t fread(void *ptr, size_t size, size_t nmemb, FILE *stream); ? ? 功能:从文件中读取数据到内存 ? ? ptr:内存首地址 ? ? size:一次读取多少个字节 ? ? nmemb:读取多少次 ? ? stream:文件指针,fopen的返回值 ? ? 返回值:成功读取的次数 ? ? 练习1:定义一个教师结构体变量并初始化,把该变量的值以二进制方式写入到文件中 #include <stdio.h> int main(int argc,const char* argv[]) ? ? 练习2:从文件中读取教师结构变量并显示 #include <stdio.h> int main(int argc,const char* argv[]) 文本方式读写: ? ? int fprintf(FILE *stream, const char *format, ...); ? ? 功能:以文本形式写入数据到文件中 ? ? stream:要写入的文件,文件指针 ? ? format:"提示信息+占位符" ? ? ...:变量名列表 ? ? 返回值:成功写入的字符个数 ? ? int fscanf(FILE *stream, const char *format, ...); ? ? 功能:从文件中读取数据到变量中 ? ? stream:要读取的文件,文件指针 ? ? format:“占位符” ? ? ...:变量地址列表 ? ? 返回值:成功读取到的变量个数 ? ? 练习3:定义一个教师结构体变量并初始化,把该变量的值以文本方式写入到文件中 #include <stdio.h> int main(int argc,const char* argv[]) ? ? 练习4:从文件中以文本形式读取教师结构变量并显示 #include <stdio.h> int main(int argc,const char* argv[]) } ? ? int fclose(FILE *stream); ? ? 功能:关闭文件 文件的随机读写: ? ? 文件位置指针: ? ? ? ? 每个打开的文件都有一个指针记录着读写操作的位置,而且它会随着读写函数的执行而发生移动,以r,r+,w,w+方式打开的文件,位置指针在文件的开头, ? ? ? ? 而以a,a+方式打开的文件,位置指针在文件末尾 ? ? ? ? int fseek(FILE *stream, long offset, int whence); ? ? ? ? 功能:设置文件位置指针的位置 ? ? ? ? stream:文件指针 ? ? ? ? offset:偏移值 ? ? ? ? whence:基础位置: ? ? ? ? ? ? SEEK_SET ? ?文件开头 ? ? ? ? ? ? SEEK_END ? ?文件末尾 ? ? ? ? ? ? SEEK_CUR ? ?当前位置 ? ? ? ? 返回值:成功返回0,失败返回-1 ? ? ? ? long ftell(FILE *stream) ? ? ? ? 功能:获取文件位置指针的位置 ? ? ? ? 返回值:在第几个字节 ? ? ? ? void rewind(FILE *stream); ? ? ? ? 功能:把文件位置指针设置到开头 文件相关函数: ? ? char *fgets(char *s, int size, FILE *stream); ? ? 功能:从文件中读取一行字符串 ? ? ? ? int fputs(const char *s, FILE *stream) ? ? 功能:写入一个字符串到文件中 ? ? ? ? int fputc(int c, FILE *stream); ? ? 功能:写入一个字符到文件中 ? ? int fgetc(int c, FILE *stream); ? ? 功能:从文件中读取一个字符 ? ? int rename(const char *oldpath, const char *newpath) ? ? 功能:重命名文件 ? ? 返回值:成功返回0,失败返回-1 ? ? int remove(const char *pathname); ? ? 功能:删除文件 ? ? 返回值:成功返回0,失败返回-1 ? ? ? |
|
C++知识库 最新文章 |
【C++】友元、嵌套类、异常、RTTI、类型转换 |
通讯录的思路与实现(C语言) |
C++PrimerPlus 第七章 函数-C++的编程模块( |
Problem C: 算法9-9~9-12:平衡二叉树的基本 |
MSVC C++ UTF-8编程 |
C++进阶 多态原理 |
简单string类c++实现 |
我的年度总结 |
【C语言】以深厚地基筑伟岸高楼-基础篇(六 |
c语言常见错误合集 |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
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 8:32:21- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |