| Types and objects | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Defined in header <stdio.h> | ||
| (until C99) | ||
| (since C99) | ||
Obtains the file position indicator and the current parse state (if any) for the file streamstream and stores them in the object pointed to bypos. The value stored is only meaningful as the input tofsetpos.
Contents |
| stream | - | file stream to examine |
| pos | - | pointer to afpos_t object to store the file position indicator to |
0 upon success, nonzero value otherwise.
#include <assert.h>#include <stdio.h>#include <stdlib.h> int main(void){// prepare a file holding 4 values of type doubleenum{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 posdouble d; rc=fread(&d,sizeof d,1, fp);// read the first doubleassert(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 againassert(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");}
Output:
First value in the file: 1.1First value in the file again: 1.1could not fsetpos stdin: Illegal seek
| returns the current file position indicator (function)[edit] | |
| moves the file position indicator to a specific location in a file (function)[edit] | |
| moves the file position indicator to a specific location in a file (function)[edit] | |
C++ documentation forfgetpos | |