fread返回值0 feof返回值为16 问题解决。
写的一个程序,要从二进制文件中读取,但是我读取到11396字节的时候 fread返回0,其feof(fp)==16
百度百科看到:
feof(fp)有两个返回值:如果遇到文件结束,函数feof(fp)的值为非零值,否则为0。EOF是文本文件结束的标志。在文本文件中,数据是以字符的ASCⅡ代码值的形式存放,普通字符的ASCⅡ代码的范围是32到127(十进制),EOF的16进制代码为0x1A(十进制为26),因此可以用EOF作为文件结束标志。当把数据以二进制形式存放到文件中时,就会有-1值的出现,因此不能采用EOF作为二进制文件的结束标志。为解决这一个问题,ASCI C提供一个feof函数,用来判断文件是否结束。feof函数既可用以判断二进制文件又可用以判断文本文件。“C”语言的“feof()”函数和数据库中“eof()”函数的运做是完全不同的。数据库中“eof()”函数读取当前指针的位置,“C”语言的“feof()”函数返回的是最后一次“读操作的内容”。多年来把“位置和内容”相混,从而造成了对这一概念的似是而非。
第一句话 真是误导人啊,我明明没到文件结束,却返回非0.
继续看,原来根据读入的如果是 0x1A 就是feof非0 靠,我一看我的11396-8 字节,正是0x1A。
怎么办呢?
我的fp是这么fopen的
fopen(this->relativeRoadIDFileName,"r");
r 改成 rb 即可。终于明白了,本以为 b 没啥用呢。。对了 在linux下 b 应该没用。 所以 这个情况 只在非posix环境下才是的。
这是 fopen 百度百科 里面 说的。
所以百度百科 feof里面 应该 有三种返回值 0 1 非0和1的。
还有 fread第二个参数,如果 实际没有读取那么多,则fread返回值 则可能小于 count。见:
http://yijiuzai.blog.163.com/blog/static/1037567272010417103312770/
fread返回值0 feof返回值为16 问题解决。相关推荐
- mysql int 默认值 0,mysql默认值设定
default value 一定要是一个常量,不能使一个函数或者是表达式,那么这就意味着你不能给一个date 类型的列 设置像CURRENT_DATE NOW() CURRENT_TIMESTAMP这 ...
- error LNK2038: 检测到“RuntimeLibrary”的不匹配项: 值“MDd_DynamicDebug”不匹配值“MD_DynamicRelease”...
1.错误提示与原因分析 或者是提示:error LNK2038: 检测到"_ITERATOR_DEBUG_LEVEL"的不匹配项: 值"0"不匹配值" ...
- win7(旗舰版)下,OleLoadPicture 加载内存中的图片(MagickGetImageBlob),返回值 0
昨天去三哥家,想把拍好的照片缩小一下,我用很久前写的一个软件进行缩小,然后进行一次效果预览,这个时候弹出: Call OleLoadPicture Fail - loadPictureFromMW 奇 ...
- python中表达式4**0.5的值为_Python内置函数__用来返回序列中的最小元素
[填空题]表达式 int(4**0.5) 的值为 [判断题]3+4j不是合法的Python表达式. [填空题]已知列表对象x = ['11', '2', '3'],则表达式 max(x) 的值为 [填 ...
- 给定一个只由 0、1、、|和^五种字符组成的字符串express,再给定一个布尔值 desired。返回express能有多少种组合方式,可以达到desired的结果。
问题描述: 给定一个只由 0(假).1(真).&(逻辑与).|(逻辑或)和^(异或)五种字符组成的字符串express,再给定一个布尔值 desired.返回express能有多少种组合方式, ...
- Redis中有序集合zset数据类型(增加(添加元素)、获取(获取指定范围元素、返回权值在min和max之间的成员、返回成员member的score值)、删除(删除指定元素和指定权值范围的元素))
sorted set,有序集合 元素为string类型 元素具有唯⼀性,不重复 [值不能重复] 每个元素都会关联⼀个double类型的score,表示权重,通过权重将元素从⼩到⼤排序 说明:没有修 ...
- 记:返回方法参数的值(或多个值),
直接贴示例代码: static void Main(string[] args) {int cs;int s= outfanhui(90, out cs); Console.WriteLine(&qu ...
- 【C 语言】C 项目开发代码规范 ( 形参合法性判断 | 函数返回值局部变量 | 函数中不用全局变量 | 函数中使用局部变量接收形参 | 函数返回值 | 形参作返回值 | 形参返回值处理 )
文章目录 一.C 项目开发代码规范 一.C 项目开发代码规范 上一篇博客 [C 语言]字符串模型 ( 键值对模型 ) 中 , 完成了字符串的 键值对 查找功能 , 代码不太规范 ; C 项目开发代码规 ...
- 第八天学习Java的笔记(方法有参无参,有返回值和无返回值)
48天 方法 对比有参数和无参数 package Demo03;/* * 有参数:小括号当中有内容,当一个方法需要一些数据条件才能完成任务的时候,就是有参数 * 例如两个数字相加,必须知道两个数字各是 ...
最新文章
- 数组反向遍历ios_LeetCode106.从中序与后序遍历序列构造二叉树(Construct Binary Tree from Inor...)...
- kafka 消息服务
- nopCommerce的源代码结构和架构
- 《C++覆辙录》——2.9:自反初始化
- 计算机控制系统期末判断题,计算机控制系统期末试题.doc
- Struts项目中,检测用户名是否被占用/查询账户名称是否被占用/查询账户名称是否已被注册/检查用户名是否被注册
- CSS3详解:transform、transition
- 超简单的mysql多实例布置
- JavaScript的数据结构与算法(三) —— 单向链表
- 什么是 Unix 以及它为什么这么重要?
- PNChart,简洁高效有动画效果的iOS图表库
- 轻松在阿里云上搭建Redis
- MongoDB最大连接数的查看与修改
- elementui中el-upload自定义上传方法中遇到的问题
- Inceptor如何访问本地文件
- 程序猿的中秋节——浪漫至死不渝!!
- clonezilla(clonezilla备份系统)
- Synch4j使用指南
- 2015年杭电计算机存储器扩展,杭电计算机组成原理存储器设计实验5
- 前端 彩票开奖走势图的实现
热门文章
- java如何对foo bar调用方法_关于java:如何测试工厂方法传递给构造函数的参数?...
- ribbon设置权重_spring cloud gateway+ribbon 组合指定版本权重分流(简易灰度发布实现)...
- python函数默认参数_Python中函数的默认参数问题
- 两个股市真理之间的矛盾
- 肚子上挂张画就能隐身:AI完全看不出我在哪,更看不出我是人类了 | 开源
- GAN能生成3D图像啦!朱俊彦团队公布最新研究成果
- 动物面部识别技术哪个强?奶牛鸡猪狗绵羊……
- 滴滴这车值不值得上?前Google全球技术总监郄小虎说来来来
- 谷歌大脑AutoML最新进展:不断进化的阿米巴网络
- 深度学习蚕食软件,十年内大部分软件工作不再涉及编程