啊哈磊_编程从这里起步

标题: ftell函数问题 [打印本页]

作者: ahgjg    时间: 2014-4-13 17:47
标题: ftell函数问题
求助于高手
为什么ftell函数返回的文件大小不正确  
我在一台老电脑上用,返回的文件大小是正确的
在两台新电脑上用,一个0字节的空文件返回的是2280
unsigned long int getfilelen(char filename[]) //返回文件大小
{
FILE *fp;
    unsigned long fl;
    if ((fp=fopen(filename,"rt"))==NULL)         
printf("打开文件失败!");
    fseek(fp,0,SEEK_END);      //移动文件指针
    fl=ftell(fp);
    fclose(fp);
    return fl;
}


作者: rosynirvana    时间: 2014-4-13 18:20
本帖最后由 rosynirvana 于 2014-4-13 18:26 编辑

首先,标准中的fopen没有t这个参数
然后,fseek在非binary mode下的返回值没有明确(易于用户理解)的意义
最后, fseek(fp,0,SEEK_END);   这一句的行为是编译环境自己确定的,没法在运行前确定这一句会干什么
作者: ahgjg    时间: 2014-4-13 18:52
fopen的参数改成rb也不行
作者: rosynirvana    时间: 2014-4-13 18:55
ahgjg 发表于 2014-4-13 18:52
fopen的参数改成rb也不行

你要在什么环境下做什么事情?
作者: ahgjg    时间: 2014-4-13 21:22
win7 啊哈C
现在把代码放在别的函数中就行了




欢迎光临 啊哈磊_编程从这里起步 (https://bbs.codeaha.com/) Powered by Discuz! X3.2