读书人

《UNIX环境高级编程》札记-定位流

发布时间: 2013-10-22 16:17:03 作者: rapoo

《UNIX环境高级编程》笔记--定位流

有三种方法可以定位流。

1.ftell函数和fseek函数这两个函数自V7依赖就存在了。但是它们假定文件的位置可以存放在一个长整型中。函数声明如下:
#include <stdio.h>int main(void){        FILE* fp;        int result;        int c;        fpos_t pos1,pos2;        if((fp = fopen("a.txt", "r+")) == NULL){                result = -1;                perror("fopen");                goto FINALLY;        }        if((c = fgetc(fp)) != -1){                printf("read c:%c\n",c);        }        if((c = fgetc(fp)) != -1){                printf("read c:%c\n",c);        }        if(fgetpos(fp,&pos1) != 0){                result = -1;                perror("fgetpos");                goto FINALLY;        }        printf("position:%ld\n",pos1);        if((c = fgetc(fp)) != -1){                printf("read c:%c\n",c);        }        if((c = fgetc(fp)) != -1){                printf("read c:%c\n",c);        }        if(fgetpos(fp,&pos2) != 0){                result = -1;                perror("fgetpos");                goto FINALLY;        }        printf("position:%ld\n",pos2);        if(fsetpos(fp, &pos1) != 0){                result = -1;                perror("fsetpos");                goto FINALLY;        }        if(fgetpos(fp,&pos2) != 0){                result = -1;                perror("fgetpos");                goto FINALLY;        }        printf("position:%ld\n",pos2);FINALLY:        if(fp != NULL){                fclose(fp);        }return result;}
运行结果:
yan@yan-vm:~/apue$ cat a.txt
abcdefghijklmnopqrstuvwxyz
yan@yan-vm:~/apue$ ./a.out
read c:a
read c:b
position:2
read c:c
read c:d
position:4
position:2

读书人网 >编程

热点推荐