Sets the file position indicator and the multibyte parsing state (if any) for the file stream stream according to the value pointed to by pos.
Besides establishing new parse state and position, a call to this function undoes the effects of ungetc and clears the end-of-file state, if it is set.
If a read or write error occurs, the error indicator (ferror) for the stream is set.
[edit] Parameters stream - file stream to modify pos - pointer to a fpos_t object to use as new value of file position indicator [edit] Return valueâ0â upon success, nonzero value otherwise.
[edit] NotesAfter seeking to a non-end position in a wide stream, the next call to any output function may render the remainder of the file undefined, e.g. by outputting a multibyte sequence of a different length.
[edit] Examplefsetpos
with error checking
#include <stdio.h> #include <stdlib.h> int main(void) { // Prepare an array of FP (floating-point) values. #define SIZE 5 double A[SIZE] = {1.0, 2.0, 3.0, 4.0, 5.0}; // Write array to a file. FILE * fp = fopen("test.bin", "wb"); fwrite(A,sizeof(double),SIZE,fp); fclose (fp); // Read the FP values into array B. double B[SIZE]; fp = fopen("test.bin","rb"); fpos_t pos; if (fgetpos(fp, &pos)) // current position: start of file { perror("fgetpos()"); fprintf(stderr, "fgetpos() failed in file %s at line # %d\n", __FILE__, __LINE__ - 3); exit(EXIT_FAILURE); } int ret_code = fread(B,sizeof(double),1,fp); // read one FP value // current position: after reading one f-p value printf("%.1f; read count = %d\n", B[0], ret_code); // print one FP value and ret_code if (fsetpos(fp, &pos)) // reset current position to start of file { if (ferror(fp)) { perror("fsetpos()"); fprintf(stderr, "fsetpos() failed in file %s at line # %d\n", __FILE__, __LINE__ - 5); exit(EXIT_FAILURE); } } ret_code = fread(B, sizeof(double), 1, fp); // reread first FP value printf("%.1f; read count = %d\n", B[0], ret_code); // print one FP value and ret_code fclose(fp); return EXIT_SUCCESS; }
Possible output:
1.0; read count = 1 1.0; read count = 1[edit] References
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4