C语言中文本文件与二进制文件的区别 一、文本文件与二进制文件的定义 大家都知道计算机的存储在物理上是二进制的,所以文本文件与二进制文件的区别并不是物理上的,而是逻辑上的。这两者只是在编码层次上有差异。 简单来说,文本文件是基于字符编码的文件,常

概述: 今天尝试使用c++中的ifstream来读取一个zip文件,结果发现每次都是读取了451个字节就结束了(测试用的zip文件4M多)。

--------------------------------------------------

author: cs_cjl

website:

http://blog.csdn.net/cs_cjl

--------------------------------------------------

测试代码: #include

#include

using namespace std;

int main (int argc, char *argv[])

{

ifstream fs(L"d:/tic.zip", std::ios::binary);

if (fs.is_open ()) {

cout << "file is open" << endl;

}

if (fs.good ()) {

cout << "filestream is good" << endl;

}

char buf[200];

size_t total_size(0);

while (true) {

fs.read(buf, 200);

total_size += fs.gcount ();

if (!fs) {

cout << "read " << fs.gcount () << endl;

cout << "fs.good () : " << fs.good () << endl;

cout << "fs.eof () : " << fs.eof () <

cout << "fs.fail () : " << fs.fail () << endl;

break;

}

}

cout << "read total size: " << total_size << endl;

return 0;

}

通过16进制编辑器查看zip文件,发现第252个字节为0x1a,通过查看 ascii表:

http://en.wikipedia.org/wiki/Ascii 发现它对应Ctrl+Z,由于历史原因,在字符模式下 当遇到这个字符时,读取会结束

结论: 一直以为 二进制模式 和 字符模式 的区别只是对换行符\r \n的处理的不同 通过这次测试发现除了对换行符的处理不同外,字符模式还会对一些控制字符进行处理

参考: wikipedia ASCII:

http://en.wikipedia.org/wiki/Ascii stackoverflow Line reading chokes on 0x1A

http://stackoverflow.com/questions/405058/line-reading-chokes-on-0x1a/405169#405169

python能不能用c打开文件_C/C++/Python等 使用二进制模式打开文件与不使用二进制模式的区别...相关推荐

  1. c 包含其他文件_C语言:全局变量在多个c文件中公用的方法!

    用C语言编写程序的时候,我们经常会遇到这样一种情况:希望在头文件中定义一个全局变量,然后包含到两个不同的c文件中,希望这个全局变量能在两个文件中共用. 举例说明:项目文件夹project下有main. ...

  2. python找与7相关的数字_C++和python实现阿姆斯特朗数字查找实例代码

    1.题目解释 如果一个n位正整数等于其各位数字的n次方之和,则称该数为阿姆斯特朗数. 例如1^3 + 5^3 + 3^3 = 153. 1000以内的阿姆斯特朗数: 1, 2, 3, 4, 5, 6, ...

  3. python open 打开是什么类型的文件-详解Python中open()函数指定文件打开方式的用法...

    文件打开方式 当我们用open()函数去打开文件的时候,有好几种打开的模式. 'r'->只读 'w'->只写,文件已存在则清空,不存在则创建. 'a'->追加,写到文件末尾 'b'- ...

  4. python打开excel的函数-Python读取excel文件中带公式的值的实现

    在进行excel文件读取的时候,我自己设置了部分直接从公式获取单元格的值 但是用之前的读取方法进行读取的时候,返回值为空 import os import xlrd from xlutils.copy ...

  5. Python 利用pickle库查看pkl文件实例演示,pkl是什么类型的文件?怎么来打开它?

    一说 pkl 很容易想到王者荣耀的 kpl 比赛,哈哈! pkl 格式的文件是 python 用于保存文件用的. 本文的重点是怎么打开这类文件,请看大屏幕! 博主之前呢也踩了个小坑呢,就是在打开文件的 ...

  6. python文件打开模式rb表示只读模式打开文件_一篇搞懂python文件读写操作(r/r+/rb/w/w+/wb/a/a+/ab)...

    关于文件操作的几种常用方式,网上已有很多解说,内容很丰富,但也因此有些杂乱复杂.今天,我就以我个人的学习经验写一篇详细又易懂的总结文章,希望大家看完之后会有所收获. 一.各模式逐个分解 'r':只读. ...

  7. java调用第三方dll文件 源码_C++调用python文件(包含第三方库)

    本文内容主要参考以下两篇文章: 武军:C++中调用python(VS2017)​zhuanlan.zhihu.com C++调用python的那些坑(详细教程步骤)_giser_xupf的博客-CSD ...

  8. python写入一个文件之前可以不打开_如何用python实现真正的打开和关闭文件

    file_name:file_name变量是一个包含了你要访问的文件名称的字符串值. access_mode:access_mode决定了打开文件的模式:只读,写入,追加等.所有可取值见如下的完全列表 ...

  9. python2打开文件_关于python:何时以二进制模式打开文件(b)?

    我注意到在文档中他们总是用'wb'打开一个CSV文件. 为什么'b'? 我知道b代表二进制模式,但是你什么时候使用二进制模式(我猜想CSV文件不是二进制模式). 如果相关我是从arcpy.da.Sea ...

最新文章

  1. chineseocr
  2. tomcat上传war包失败
  3. 5g的八大关键指标_你对5G技术标准了解多少(干货)
  4. 关于cocostudio动态添加控件触摸响应无效的学习
  5. 长度最小的子数组--滑动窗口
  6. 字符串匹配算法(二):BM(BoyerMoore)算法、坏字符规则,好后缀规则
  7. 图谱实战 | 斯坦福黄柯鑫:图机器学习在生物图上的应用
  8. JS Math对象(算数、四舍五入、随机数)
  9. Java知识点总结(反射-获取类的信息)
  10. sklearn模型保存
  11. 使用wordpress分页函数paginate_links
  12. Linux风雨20年回顾 道路是沧桑
  13. 用pl.pojo.tester测试Pojo类,提高测试覆盖率
  14. bochs镜像java模拟器_bochs WIN7 IMG镜像文件
  15. 【7】PR音频及结合AU去除噪音【8】PR字幕运用
  16. pycharm 拼音检查
  17. win10无限蓝屏_升级 Win10 后系统蓝屏或无限重启的解决方法之一
  18. 利用Photoshop对证件照换底且抠出头发丝
  19. CSS中的十二种结构伪类选择器
  20. addons软件下载_addons中国版

热门文章

  1. effective mysql之备份与恢复_Effective MySQL之备份与恢复
  2. Java面向对象(10)--super关键字
  3. ValueError( Shape(4, ?, 1, 20) and () are incompatible
  4. 互联网和大数据是什么意思_何为互联网大数据?为什么每个人在数据的面前,相当于一丝不挂?...
  5. 三个世界及其有关概念
  6. 清空计算机网络缓存,【缓存清理工具】缓存清理软件_电脑缓存清理软件【最新】-太平洋电脑网...
  7. 一个iOS表单框架-UFKit
  8. django中的FBV和CBV
  9. php 操作 mysql 数据库常用方法集合
  10. Apache Bench安装与使用