求教一个关于 ftell()函数返回值的问题,敬请高人指点。

mig_31_fox 2011-03-16 10:40:13
步骤:
1.自己先新建一个文本文档,命名为:Stu_list.txt. 内容为:abc
如下图所示:


2.编写完整程序,如下:

#inlcude <stdlib.h>
#include <stdio.h>

void main()
{
FILE *fp;
long len;
char *buf;

fp=fopen("stu_list.txt","rb");

fseek(fp,0,SEEK_END); //使stu_list.txt的文件指针移动到该文件的末尾。
len=ftell(fp); //使用ftell()函数,求得当前指针相对于stu_list.txt文件开头的位移量,赋值给len.
printf("%ld\n",len);
}

3.编译,运行。

4.得到的结果是: Len的值是5,而不是3.

我的问题是:既然ftell()函数的返回值是该文件指针在当前的读写位置偏离文件头部的字节数,stu_list的内容只有abc这三个字符,即三个字节。那么,为什么len的值是5呢?

敬请各位高人给予精确的指点,小弟在这里先谢谢各位了。

环境:
1.所用编译器:Visual C++ 6.0
2.操作系统:Windows XP 32位
...全文
986 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
ForestDB 2011-03-16
  • 打赏
  • 举报
回复
我按照LZ的说法,实验的结果是3。
所以还请LZ检查文件先。
具体的检查方法是用WinHex或者UltraEdit的hex模式来看文件的真实内容。
赵4老师 2011-03-16
  • 打赏
  • 举报
回复
请使用WinHex软件
mig_31_fox 2011-03-16
  • 打赏
  • 举报
回复
回楼上的朋友们,我建立的这个 stu_list.txt 文件里面没有任何回车或者换行,我只是直接连续输入abc三个字符就保存。没有键入任何回车或者换行。
yuyan_linger 2011-03-16
  • 打赏
  • 举报
回复
我试过了 输出是3啊
你这里用的是Stu_list.txt还是stu_list.txt
是不是读错了?
我用vs05

Meteor_Code 2011-03-16
  • 打赏
  • 举报
回复
你是不是保存成了utf8文本啊,utf8文本在windows中前面会加个2字节标志好像是 ff fe
2011-03-16
  • 打赏
  • 举报
回复
有些文本编辑器喜欢在末尾自动加上一个换行符。你最好用支持 16 进制编辑的编辑器检查一下。
yuanwang1986 2011-03-16
  • 打赏
  • 举报
回复
也没有空格之类的吗
yuanwang1986 2011-03-16
  • 打赏
  • 举报
回复
在说这个5的问题,如果你stu_list.txt有两个回车换行,你是以rb方式读的话输出应该是7个,以r读是占5个。但如果你的stu_list.txt里面是1(空格)2(空格)3这样的,不管你是以rb或者r读都是5,因为空格也是占一个字节的,这里面没有换行操作
mig_31_fox 2011-03-16
  • 打赏
  • 举报
回复
回复楼上的yuanwang1986朋友,我在建立 stu_list.txt 时候,只是输入了abc三个字符,直接保存文件。没有键入回车键。所以,这个 stu_list.txt 文件,只有 abc 这三个字符,没有回车符,也没有换行符。
yuanwang1986 2011-03-16
  • 打赏
  • 举报
回复
你的图看不见,我估计是因为你读写的方式问题,就是说二进制文件跟文本文件是不同的,以rb读时一个换行(0D+0A)占两个字节,而以r读时碰到(0D+0A)自动转换为0A,只占一个字节,不知道我说的你能明白不,其实你只要弄清文本文件跟二进制文件的区别 这个问题就很容易想明白了
yuanwang1986 2011-03-16
  • 打赏
  • 举报
回复
建议你下载个UltraEdit,然后你文件里面有什么就一目了然了
mig_31_fox 2011-03-16
  • 打赏
  • 举报
回复
谢谢楼上的各位朋友,我会参照你们的指导,再试一试。
hxingz 2011-03-16
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 meteor_code 的回复:]

你是不是保存成了utf8文本啊,utf8文本在windows中前面会加个2字节标志好像是 ff fe
[/Quote]
这个很有可能

70,038

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧