文件读写

文件操作可分为文本文件、二进制文件读写

1.C语言读写

1.1读文本文件

int a; cha b[]=......

fopen("fileName, "r");

fscanf(filePtr, "%s,%d\n", a,b);

or fgets(...)

写文本文件

float c = ....

fopen(..........)

fprintf(filePtr, "\n%s, %d, %3.1f\n",b, a, c);      %3.1f指保留三位有效数字,小数点保留一位,格式化为字符输出到文件

1.2读二进制

fopen(fileName, "rb");

fread(...........)

写二进制

fopen(fileName, "wb");

fwrite(...........)

fread函数返回直接读取的字节数,对于C++的read函数则返回ifstream的引用,要获取其实际读取的字节数用gcount函数

2.C++读写

good():检查是否打开,成功打开return TRUE

eof():是否到文件末尾,若到文件末尾retur TREUE

2.1读文本文件

ifstream fcin(fileName, ios::in);    用 ios_base::in也可以,ios::in是继承自ios_base::in

getline(fcin, str.....)

or fcin.getline(......)

or get(fcin.......)

or fcin.get(....)

or fcin >>

写文本文件

ofstream fcout(fileName, ios::out);    用ios_base::out一样,ios是从ios_base派生出来的

fcout <<

2.2读二进制文件

ifstream fcin(fileName, ios::in || ios::binary)

fcin.read(.....)

写二进制文件

ofstream fout(fileName, ios::out || ios::binary)

fout.write(....)

3.MFC读写

例子直接参考:https://blog.csdn.net/phenixyf/article/details/42917191

参数参考:https://blog.csdn.net/kaida1234/article/details/51148700

注意:

对于字符来说,其二进制表示与文本表示是一样的,对于数字来说,其二进制表示与文本表示存在很大差异;字符、数字都是存储其二进制,字符的二进制为其对应的ASCLL对应的值,数字的二进制就是其直接转为二进制的值。

对于以文本模式、二进制模式的输出,本质都是输出字符、数字对应的二进制,区别仅仅在于文本模式会将\n输出为\n与\r的组合,而二进制模式严格按照二进制输出,所以对于文本输出、二进制输出关键在于其文本、二进制模式的选择,与函数无关,所以有的函数既可以输出文本形式文件,又可以输出二进制文件。比如write函数既可以在文本模式下输出(会将\n输出为\n\r),又可以在二进制模式下输出。(注意fprintf就只能在文本模式下输出,因为其是先格式化为文本后输出)

举例说明1:

C++的函数write(),二进制模式输出可以这样:(read函数与write函数对应,也可以在文本模式、二进制模式下使用,具体可见primer plus文件读写部分)

ofstream fcout(filePath, ios_base::out | ios_base::binary);

int x[3] {1, 2, 3};

fcout.write((char*)x, sizeof(int) * 3);

文本模式可以这样:

ofstream fcout(filePath, ios_base::out);

char x[3] {'a', '\n', 'b'};

fcout.write(x, sizeof(char) * 3);

举例说明2:

C++文件输出的<<运算在文本输出模式下很好用,其后边可以直接跟float、int、double数字的类型,其会将他们转为对应的字符的ASCLL,最后将他们输出到文件。

ofstream fcout(filePath, ios_base::out);

char a[] = "abcdef";

int b = 1; int c = 2;

fcout << a << b << c;

举例说明3:

文本输出模式下,可以将int、float、double数字类型格式化到字符串中,输出这些字符串,就完成了对数字的文本化输出(同理可以想到>>在读取中的应用)

char a[100];

int n = 1;

sprintf(a, "n的值为%d", n);

fcout << a;

有关sprintf函数的格式化符号可见:http://www.runoob.com/cprogramming/c-function-sprintf.html

输出的格式控制

对输出的格式控制主要分为三种方法:控制符(也可作为函数使用,但不是成员函数)、set函数(也是成员函数)、其他成员函数,set函数功能最全,但是较为繁琐,部分可以用控制符代替。

以下为一些控制符与set函数的对照,节选自primer plus p751

还有setw、setpresicion、setfill控制符;fill()、precision()、width()成员函数也可以设置格式

例1:

fcout << hex 或 hex(fcout);

fcout.setf(ios_base::hex, ios_base::basefied);

例2:

fcout << setw(20); 或 setw(fcout)

fcout.width()

小数存放方式有浮点数(默认)、定点、科学计数法,默认的浮点计数精度指其总共位数,在定点、科学计数法下指其小数位数;

设置例子:

setf():

fcout.setf(ios_base::fixed, ios_base::floatfied); fcout.presicion(3);

控制符:

fcout << fixed << setprecision(3);

设置浮点没有专门的字段,可以通过以下:

fcout.set(0, ios_base::floatfied);

或 fcout.unsetf(ios_base::floatfied)

或在fixed下 fcout.unsetf(ios_base::fixed);

或在scientific下 fcout.unsetf(ios_base::scientific)

C++中一些常用的流格式控制符汇总:https://blog.csdn.net/qq_30062589/article/details/54835894

C、C++文件的读写与格式控制相关推荐

  1. 第五天2017/04/06(上午:文件的“读写操作”)

    文件的"读"."写"的理解不是站在"程序"的角度,而是站在"文件"的角度读:从文件中读取数据,输出到程序中写:从程序中读 ...

  2. TClientDataSet[28]: 读写其他格式的 XML 文件

    TClientDataSet 可以直接存取的 XML 有自己的格式规范, 存取其他格式 XML 需要相应的映射文件(*.xtr). 这种 *.xtr 文件是用 XML Mapper(Delphi 自带 ...

  3. Python读写CSV格式文件

    CSV(Comma Separated Values)格式的文件常用于电子表格和数据库中内容的导入和导出.Python标准库csv提供的reader.writer对象和DictReader和DictW ...

  4. java使用jxl包读写excel表格文件,即xls格式文件

    全栈工程师开发手册 (作者:栾鹏) java教程全解 java使用jxl包读写excel表格文件,即xls格式文件 本实例演示使用jxl包实现对excel文件的操作,下载 测试代码 public st ...

  5. csv文件 内容转义_保存csv文件时的生僻字处理和格式控制

    应用场景 Web应用中导入导出报表是一个非常常见的需求,而普通用户使用最多的表格文件都是用Excel保存的. 一般来说,对于数据量较小的导入导出,使用xls/xlsx文件和用户交互是最佳选择,即有相应 ...

  6. java读写json格式的文件方法详解.txt,并批量存储进redis

    捐躯赴国难,视死忽如归.恸哭六军俱缟素,冲冠一怒为红颜.君子坦荡荡,小人长戚戚.风日晴和人意好,夕阳箫鼓几船归.民为贵,社稷次之,君为轻.Java 读写json格式的文件方法详解 文章录入:7747. ...

  7. 【Ini格式文件】Ini格式文件的读写

    前言 在实际工作中,常常需要读写ini格式的文件.在Gitee上找到一份开源的代码(MIT证书),其使用了文件读写的标准库函数,但我当前的嵌入式环境对文件读写的标准库函数的支持存在问题,当调用文件读写 ...

  8. MATLAB中文件的读写和数据的导入导出

    http://blog.163.com/tawney_daylily/blog/static/13614643620111117853933/ 在编写一个程序时,经常需要从外部读入数据,或者将程序运行 ...

  9. python不同数据的读入_python读写不同编码txt文件_python读写txt文件

    python读写不同编码txt文件_python读写txt文件 以后整理规范 [python] view plaincopy import os import codecs filenames=os. ...

最新文章

  1. exit函数的头文件问题
  2. 函数计算是如何工作的?
  3. asp.net内置对象
  4. 鸿蒙大陆武器合成,鸿蒙大陆9.1攻略(附隐藏英雄密码)
  5. 考个计算机一级要学多久,本科需要考计算机一级吗,大学毕业要求必须考计算机一级,这种情况怎么办?...
  6. 侯捷面向对象高级编程(二)
  7. java是值调用_Java 只有值调用
  8. C语言中static关键字详解
  9. 简要说明下maven的作用_Maven资料库–简要指南
  10. 精美js聊天窗口界面代码
  11. win7生成ssh key配置到gitlab
  12. SQL数据库置疑修复说明文档
  13. 当电脑接双屏扩展显示器时,系统崩溃,QQ浏览器出现显示异常,通过如下方法使之正常
  14. NVIDIA GPU 运算能力列表
  15. esp8266接入小爱同学,通过mqtt
  16. java 死循环排查_java2如何排查线上死循环
  17. 【Markdown简单语法练习】
  18. 自然辩证法小论文选题_★自然辩证法论文题目_自然辩证法毕业论文题目大全_自然辩证法论文选题参考...
  19. 6个小故事:让你变身营销超人!
  20. 国内疫情统计及预测分析系统

热门文章

  1. C语言数组字符串清除空格,用C语言从字符串中删除空格
  2. PCB孔无铜原因分析及改善措施
  3. matlab进行相位展开,相位展开(phase unwrapping)算法研究与实践
  4. 20135316王剑桥 linux第三周课实验笔记
  5. 昨晚做了一个梦,梦见skycn.com启用了一种新的广告方式
  6. c语言实现-五子棋(单双人,可改棋盘大小)
  7. 网络电台搭建教程(jetcast)
  8. 信息安全需要c语言吗,以下哪些是需要在信息安全策略中进行描述的:()
  9. PTA L2-030 冰岛人 (并查集)
  10. 远程桌面连接使用教程