关于fseek函数的改变流位置中的指针

#include "stdafx.h"

int main(int argc, char* argv[])
{
int size = 0;
FILE* ptr_file = NULL;
FILE* ptr_new_file;

ptr_file = fopen("D:\\pptp电脑版客户端.exe","r");
ptr_new_file = ptr_file;
if(ptr_file == NULL)
{
    printf("文件打开失败");
}
else
{
    int result = fseek(ptr_file,0,SEEK_END);
    size = ftell(ptr_file);
    printf("%d\n",size/1024);
    ptr_new_file == ptr_file?printf("OK"):printf("NO");
}


return 0;

}

指针指向的地址 并没有改变 函数介绍不是说可以改变吗
还有就是为什么ftell 又能得到结果 请大神解答

1个回答

fseek改变的不是指向文件FILE类型的指针,这个指针在文件的整个操作过程中是不会变的。在文件操作的过程中会维护一个指向当前文件中数据位置的变量,这个变量才会根据fseek而变化,所以ftell有效

qq_40395537
qq_40395537 回复老兵新唱: 懂了 谢谢
接近 2 年之前 回复
qq_41563566
老兵新唱 fseek函数就是改变这个变量的函数,ftell就是获得这个变量的函数,
接近 2 年之前 回复
qq_40395537
qq_40395537 那这个变量 我们有没有可能访问到呢
接近 2 年之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问