黑马程序员技术交流社区

标题: C语言学习笔记:文件定位及文件检测函数 [打印本页]

作者: 弥修斯    时间: 2015-7-16 18:21
标题: C语言学习笔记:文件定位及文件检测函数
文件定位 :
fseek(移动文件流的读写位置)
定义函数 int fseek(FILE * fp, long offset , int whence);
函数说明 fseek()用来移动文件流的读写位置。参数fp为已打开的文件指针,参数offset为根据参数whence来移动读写位置的位移数。
参数 whence为下列其中一种:
    SEEK_SET    ==  0  从距文件开头offset位移量为新的读写位置。
    SEEK_CUR   ==  1  以目前的读写位置往后增加offset个位移量。
    SEEK_END   == 2 将读写位置指向文件尾后再增加offset个位移量。
当whence值为SEEK_CUR 或SEEK_END时,参数offset允许负值的出现。
范例代码如下:

  1. #include<stdio.h>
  2. main()
  3. {
  4. FILE * stream;
  5. long offset;
  6. fpos_t pos;
  7. stream=fopen(“/etc/passwd”,”r”);
  8. fseek(stream,5,SEEK_SET);
  9. printf(“offset=%d/n”,ftell(stream));
  10. rewind(stream);
  11. fgetpos(stream,&pos);
  12. printf(“offset=%d/n”,pos);
  13. pos=10;
  14. fsetpos(stream,&pos);
  15. printf(“offset = %d/n”,ftell(stream));
  16. fclose(stream);
  17. }
复制代码

执行 offset = 5
offset =0
offset=10


rewind(重设文件流的读写位置为文件开头)
定义函数 void rewind(FILE * stream);
函数说明 rewind()用来把文件流的读写位置移至文件开头。参数stream为已打开的文件指针。此函数相当于调用fseek(stream,0,SEEK_SET)。
返回值
范例 参考fseek()

文件检测函数:
feof(检查文件流是否读到了文件尾)
定义函数 int feof(FILE * stream);
函数说明 feof()用来侦测是否读取到了文件尾,尾数stream为fopen()所返回之文件指针。如果已到文件尾则返回非零值,其他情况返回0。
返回值 返回非零值代表已到达文件尾。
PS: feof会多执行一次 造成最后会输出一些乱码 ,用宏定义zhong: EOF 可避免乱码





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2