Gets the stream’s file position.
Include
<stdio.h>
Prototype
int fgetpos(FILE *stream, fpos_t *pos);
Arguments
stream
|
target stream |
pos
|
position-indicator storage |
Return Value
Returns 0 if successful; otherwise, returns a non-zero value.
Remarks
The function stores the file-position indicator for the given stream in
*pos
if successful, otherwise, fgetpos
sets
errno
.
Example
/* This program opens a file and reads bytes at */
/* several different locations. The fgetpos */
/* function notes the 8th byte. 21 bytes are */
/* read then 18 bytes are read. Next the */
/* fsetpos function is set based on the */
/* fgetpos position and the previous 21 bytes */
/* are reread. */
#include <stdio.h> /* for fgetpos, fread, */
/* printf, fopen, fclose, */
/* FILE, NULL, perror, */
/* fpos_t, sizeof */
int main(void)
{
FILE *myfile;
fpos_t pos;
char buf[25];
if ((myfile = fopen("sampfgetpos.c", "rb")) ==
NULL)
printf("Cannot open file\n");
else
{
fread(buf, sizeof(char), 8, myfile);
if (fgetpos(myfile, &pos) != 0)
perror("fgetpos error");
else
{
fread(buf, sizeof(char), 21, myfile);
printf("Bytes read: %.21s\n", buf);
fread(buf, sizeof(char), 18, myfile);
printf("Bytes read: %.18s\n", buf);
}
if (fsetpos(myfile, &pos) != 0)
perror("fsetpos error");
fread(buf, sizeof(char), 21, myfile);
printf("Bytes read: %.21s\n", buf);
fclose(myfile);
}
}
Example Output
Bytes read: program opens a file
Bytes read: and reads bytes at
Bytes read: program opens a file