fseek的用途:控制件指针偏移。
函数原型:int fseek(file *stream, long offset, int fromwhere)
参数1是文件流指针,参数2是偏移量大小,参数3是偏移模式,通常为1:seek_cur(文件当前位置) seek_set(文件开头) seek_end(文件结尾)
请看例子:
1 #include
2 #include
3 #include
4 int main()
5 {
6
7 char buf[20];
8 char msg[] = "hello world!";
9 file *fp = fopen("a.txt", "w ");
10
11 if(fp == null) {
12 perror("a.txt:");
13 exit(exit_failure);
14 }
15 fseek(fp, 0, seek_set);
16 fwrite(msg, 1, strlen(msg) 1, fp);
17 fseek(fp, 0, seek_set);
18 fread(buf, 1, strlen(msg) 1, fp);
19 printf("%s\n", buf);
20 return 0;
21 }
首先看第9行,我们打开一个文本,并且设置为读写模式"w "。这就意味着读写都用的是一个文件指针了。
注意第15行和第17行的fseek。在16行执行之后,字符指针去到了末尾,因此要用fseek让指针回到文件的开始位置,seek_set就是回到文件开头,并且偏移量为0。
去掉16行,18行读的时候就从结尾开始了,这当然不是我们的本意。
当然,如果读写不共用同一个文件指针,那么久没有必要用fseek了。