关于fgetpos fsetpos的用法
如题,网上找了很多,没看懂…………只知道了这个函数里面 pos的类型和转换类型其他, 用法什么的,我完全没看懂
书上说:他是一个比fseek还牛叉的东西,可以表示的位置范围非常之大,恩,可是我试了好几次……都显示0.当然我明白我指针没动过,当然显示0.。可是我不明白这个函数就特么2个参数,怎么让指针动起来?? fgetpos() 是索取当下指针说指向的位置,然后用第二个指针记录位置
fsetpos() 是 reset,重设,让指针指向文件的头指针。
打开头文件,就可以看到原型了~ claws0n 发表于 2018-9-13 16:23
fgetpos() 是索取当下指针说指向的位置,然后用第二个指针记录位置
fsetpos() 是 reset,重设,让指针指向 ...
恩恩,原型是知道。但是不大理解意思
听大哥这么一说,意思是不是 指:fgetpos的指针是没有办法去移动的,只能去记录第一个参数的指针的位置……
fsetpos的意思是:重置指针,指向该文件的开头是吗? 那为什么不用 rewind() 呢??不是更好吗?? 彭尼玛 发表于 2018-9-13 16:57
恩恩,原型是知道。但是不大理解意思
听大哥这么一说,意思是不是 指:fgetpos的指针是没有办法去移动的 ...
汗,说错了,更正一下。
fsetpos 是让文件指针,指向第二个指针的位置。要配合 fgetpos。如果在读取文件的时候用 fgetpos,就会是重设。 claws0n 发表于 2018-9-13 18:24
汗,说错了,更正一下。
fsetpos 是让文件指针,指向第二个指针的位置。要配合 fgetpos。如果在读取文件 ...
哦,就是让另外一个指针去指向这个位置是吧?
那他们有什么具体用法呢? 彭尼玛 发表于 2018-9-13 19:07
哦,就是让另外一个指针去指向这个位置是吧?
那他们有什么具体用法呢?
其实我对标准库不熟。看了资料,并不鼓励用。我能够想到的用法是:如果要覆盖一些字符串,先标记位置,如果有错误,可以回去原来的位置重新输入。这些也许是为了一些系统相容性的遗物...... claws0n 发表于 2018-9-13 19:19
其实我对标准库不熟。看了资料,并不鼓励用。我能够想到的用法是:如果要覆盖一些字符串,先标记位置,如 ...
{:5_107:}懵逼了,好多都不是很懂,这个IO函数,懵逼了 彭尼玛 发表于 2018-9-13 20:06
懵逼了,好多都不是很懂,这个IO函数,懵逼了
考试?不然会这几个就够用了,呵呵
scanf, printf, fopen, fread, fwrite claws0n 发表于 2018-9-13 20:24
考试?不然会这几个就够用了,呵呵
scanf, printf, fopen, fread, fwrite
也不是考试,主要是多会一点也好 彭尼玛 发表于 2018-9-14 11:48
也不是考试,主要是多会一点也好
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
FILE *file = fopen("test.txt", "rb");
char buf;
fread(buf, 1, 10, file);
for(int i = 0; i < 10; ++i)
{
printf("buf[%d] = '%c'\n", i, buf);
}
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;
}
人造人 发表于 2018-9-14 21:56
恩恩,后面翻了几篇文章后,明白了,其实这东西就是得到指针指向的字节位置,和使用指针指向pos位置的用法。。。
页:
[1]