鱼C论坛

 找回密码
 立即注册
查看: 2905|回复: 10

关于fgetpos fsetpos的用法

[复制链接]
发表于 2018-9-13 16:10:24 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
如题,网上找了很多,没看懂…………只知道了这个函数里面 pos的类型和转换类型
其他, 用法什么的,我完全没看懂
书上说:他是一个比fseek还牛叉的东西,可以表示的位置范围非常之大,恩,可是我试了好几次……都显示0.当然我明白我指针没动过,当然显示0.。可是我不明白这个函数就特么2个参数,怎么让指针动起来??
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-9-13 16:23:15 From FishC Mobile | 显示全部楼层
fgetpos() 是索取当下指针说指向的位置,然后用第二个指针记录位置
fsetpos() 是 reset,重设,让指针指向文件的头指针。

打开头文件,就可以看到原型了~
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-9-13 16:57:01 | 显示全部楼层
claws0n 发表于 2018-9-13 16:23
fgetpos() 是索取当下指针说指向的位置,然后用第二个指针记录位置
fsetpos() 是 reset,重设,让指针指向 ...

恩恩,原型是知道。但是不大理解意思
听大哥这么一说,意思是不是 指:fgetpos的指针是没有办法去移动的,只能去记录第一个参数的指针的位置……
fsetpos的意思是:重置指针,指向该文件的开头是吗? 那为什么不用 rewind() 呢??不是更好吗??
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-9-13 18:24:57 From FishC Mobile | 显示全部楼层
彭尼玛 发表于 2018-9-13 16:57
恩恩,原型是知道。但是不大理解意思
听大哥这么一说,意思是不是 指:fgetpos的指针是没有办法去移动的 ...

汗,说错了,更正一下。
fsetpos 是让文件指针,指向第二个指针的位置。要配合 fgetpos。如果在读取文件的时候用 fgetpos,就会是重设。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-9-13 19:07:13 | 显示全部楼层
claws0n 发表于 2018-9-13 18:24
汗,说错了,更正一下。
fsetpos 是让文件指针,指向第二个指针的位置。要配合 fgetpos。如果在读取文件 ...

哦,就是让另外一个指针去指向这个位置是吧?
那他们有什么具体用法呢?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-9-13 19:19:31 From FishC Mobile | 显示全部楼层
彭尼玛 发表于 2018-9-13 19:07
哦,就是让另外一个指针去指向这个位置是吧?
那他们有什么具体用法呢?

其实我对标准库不熟。看了资料,并不鼓励用。我能够想到的用法是:如果要覆盖一些字符串,先标记位置,如果有错误,可以回去原来的位置重新输入。这些也许是为了一些系统相容性的遗物......
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-9-13 20:06:02 | 显示全部楼层
claws0n 发表于 2018-9-13 19:19
其实我对标准库不熟。看了资料,并不鼓励用。我能够想到的用法是:如果要覆盖一些字符串,先标记位置,如 ...

懵逼了,好多都不是很懂,这个IO函数,懵逼了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-9-13 20:24:40 From FishC Mobile | 显示全部楼层
彭尼玛 发表于 2018-9-13 20:06
懵逼了,好多都不是很懂,这个IO函数,懵逼了

考试?不然会这几个就够用了,呵呵
scanf, printf, fopen, fread, fwrite
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-9-14 11:48:19 | 显示全部楼层
claws0n 发表于 2018-9-13 20:24
考试?不然会这几个就够用了,呵呵
scanf, printf, fopen, fread, fwrite

也不是考试,主要是多会一点也好
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-9-14 21:56:22 | 显示全部楼层
彭尼玛 发表于 2018-9-14 11:48
也不是考试,主要是多会一点也好

1.png
#include <stdio.h>
#include <stdlib.h>

int main(void)
{
        FILE *file = fopen("test.txt", "rb");
        char buf[100];

        fread(buf, 1, 10, file);
        for(int i = 0; i < 10; ++i)
        {
                printf("buf[%d] = '%c'\n", i, buf[i]);
        }

        int ch;
        fpos_t pos;
        pos = 0;
        fsetpos(file, &pos);
        ch = fgetc(file);
        printf("0 -> '%c'\n", ch);

        pos = 3;
        fsetpos(file, &pos);
        ch = fgetc(file);
        printf("3 -> '%c'\n", ch);

        pos = 0;
        fsetpos(file, &pos);
        for(int i = 0; i < 3; ++i)
        {
                putchar(fgetc(file));
        }
        printf("\n");

        fgetpos(file, &pos);
        printf("pos = %lld\n", pos);

        fclose(file);

        return 0;
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-9-14 22:03:37 | 显示全部楼层

恩恩,后面翻了几篇文章后,明白了,其实这东西就是得到指针指向的字节位置,和使用指针指向pos位置的用法。。。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-30 09:50

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表