社区
C语言
帖子详情
ftell()的问题
Vike920602
2011-03-18 10:45:13
《C primer plus》上说,用文本模式打开文件,在DOS下,ftell()返回一个把\r\n看成一个字符的值。可是我打开一个只有“回车”的文本文件(就是在记事本中输入一个回车),无论用二进制还是文本模式打开,都返回2。莫非ftell()在文本模式下没有把\r\n看成一个字符?
...全文
189
7
打赏
收藏
ftell()的问题
《C primer plus》上说,用文本模式打开文件,在DOS下,ftell()返回一个把\r\n看成一个字符的值。可是我打开一个只有“回车”的文本文件(就是在记事本中输入一个回车),无论用二进制还是文本模式打开,都返回2。莫非ftell()在文本模式下没有把\r\n看成一个字符?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
7 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
dancing_with_wolf
2011-03-19
打赏
举报
回复
首先:ftell()的原型是:long ftell(FILE*fp),所以如果返回的话可能是返回2L,
其次:ftell()如果发生错误,返回的值是:-1L,
所以,可能是你的代码有问题。
witwolf
2011-03-19
打赏
举报
回复
检查下代码吧。
delphiwcdj
2011-03-19
打赏
举报
回复
书上有时也有很多错的,用实践检验真理
zhouhui915
2011-03-19
打赏
举报
回复
在Windows下回车就是\r\n 在Linux下回车是\n ,注意区别
xali
2011-03-19
打赏
举报
回复
或者是否我们用的DOS不是真实的DOS?只能试验了。
xali
2011-03-19
打赏
举报
回复
看来是C++ Primer 错了,事实是:getch(fp)在文本方式将\r\n当做一个字符读了,在二进制时作为两个字符读了,而ftell(fp)始终记录着二进制的位置。
就是说getch(fp)与ftell(fp)联合使用,在文本模式与二进制模式读文件,ftell(fp)的结果可能不同。
91program
2011-03-18
打赏
举报
回复
实践出真知啊!
也有可能你的代码写的有问题。
c语言怎么让两个函数同时进行_C语言处理I/O的两个随机访问函数:fseek()和
ftell
()...
本文介绍了C语言中用于文件定位的fseek()和
ftell
()函数,包括它们的工作原理、二进制模式与文本模式的区别、可移植性
问题
以及与之相关的getpos()和fsetpos()函数。通过实例展示了如何在二进制模式下处理文件,以确保程序在不同系统中的兼容性。
C Primer Plus(6) 中文版 第13章 文件输入/输出 13.5 随机访问:fseek()和
ftell
()
本文介绍了C语言中用于文件操作的fseek()和
ftell
()函数,用于在文件中进行随机访问。fseek()函数允许将文件指针移动到指定位置,
ftell
()则返回当前文件位置。通过示例程序`reverse.c`,展示了如何倒序显示文件内容,特别处理了MS-DOS文本文件中的Ctrl+Z字符。虽然这两个函数在不同系统中可能存在可移植性
问题
,但它们是处理文件定位的基本工具。此外,还提到了fgetpos()和fsetpos()函数,用于处理更大的文件定位需求。
怎么解决c语言中feof多读一次的
问题
本文分享了如何通过 fseek(),
ftell
() 和 rewind() 函数组合来修正大作业中文件指针feof导致的额外读取
问题
,包括重定位、字节计数和回滚文件指针的操作。
交叉编译FBReader后运行总是出现 Segmentation fault
针对ARM版FBReader在运行中出现的Segmentation fault错误进行详细分析,并通过GDB跟踪找到
问题
根源在于libc.so.6中的
ftell
()函数,进一步探讨了解决方案。
C/C++中读取文件判断是否读取结束
本文探讨了使用C++读取文件时遇到的feof()函数误判
问题
,并提供了一种利用fseek和
ftell
准确判断文件末尾的有效解决方案。
C语言
70,038
社区成员
243,245
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章