?
? ????? PHP ??? ???? ??? ?? ??
在頭文件<stdio.h>中定義 | ||
---|---|---|
int fgetpos(FILE * stream,fpos_t * pos); | (直到C99) | |
int fgetpos(FILE * restrict stream,fpos_t * restrict pos); | (自C99以來) |
獲取文件流的文件位置指示器和當(dāng)前解析狀態(tài)(如果有)stream
并將它們存儲在指向的對象中pos
。存儲的值只對輸入有意義fsetpos
。
流 | - | 文件流來檢查 |
---|---|---|
崗位 | - | 指向fpos_t對象以存儲文件位置指示符的指針 |
0
一旦成功,否則非零值。
#include <stdio.h>#include <stdlib.h>#include <assert.h> int main(void){ // prepare a file holding 4 values of type double enum {SIZE = 4}; FILE* fp = fopen("test.bin", "wb"); assert(fp); int rc = fwrite((double[SIZE]){1.1, 2.2, 3.3, 4.4}, sizeof(double), SIZE, fp); assert(rc == SIZE); fclose(fp); // demo using fsetpos to return to the beginning of a file fp = fopen("test.bin", "rb"); fpos_t pos; fgetpos(fp, &pos); // store start of file in pos double d; rc = fread(&d, sizeof d, 1, fp); // read the first double assert(rc == 1); printf("First value in the file: %.1f\n", d); fsetpos(fp,&pos); // move file position back to the start of the file rc = fread(&d, sizeof d, 1, fp); // read the first double again assert(rc == 1); printf("First value in the file again: %.1f\n", d); fclose(fp); // demo error handling rc = fsetpos(stdin, &pos); if(rc) perror("could not fsetpos stdin");}
輸出:
First value in the file: 1.1First value in the file again: 1.1could not fsetpos stdin: Illegal seek
C11標(biāo)準(zhǔn)(ISO / IEC 9899:2011):
7.21.9.1 fgetpos函數(shù)(p:336)
C99標(biāo)準(zhǔn)(ISO / IEC 9899:1999):
7.19.9.1 fgetpos函數(shù)(p:302)
C89 / C90標(biāo)準(zhǔn)(ISO / IEC 9899:1990):
4.9.9.1 fgetpos函數(shù)