FreeBSD Manual Pages
std::fsetpos(3) C++ Standard Libary std::fsetpos(3) NAME std::fsetpos - std::fsetpos Synopsis Defined in header <cstdio> int fsetpos( std::FILE* stream, const std::fpos_t* pos ); Sets the file position indicator and the multibyte parsing state (if any) for the C 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 std::ungetc and clears the end-of-file state, if it is set. If a read or write error occurs, the error indicator (std::ferror) for the stream is set. Parameters stream - file stream to modify pos - pointer to a fpos_t object obtained from std::fgetpos called on a stream associated with the same file Return value 0 upon success, nonzero value otherwise. Also, sets errno on fail- ure. Notes After 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. Example // Run this code #include <cstdio> #include <cstdlib> int main() { // Prepare an array of floating-point values. const int SIZE = 5; double A[SIZE] = {1., 2., 3., 4., 5.}; // Write array to a file. std::FILE * fp = std::fopen("test.bin", "wb"); std::fwrite(A, sizeof(double), SIZE, fp); std::fclose(fp); // Read the values into array B. double B[SIZE]; fp = std::fopen("test.bin", "rb"); std::fpos_t pos; if (std::fgetpos(fp, &pos) != 0) // current position: start of file { std::perror("fgetpos()"); std::fprintf(stderr, "fgetpos() failed in file %s at line # %d\n", __FILE__, __LINE__-3); std::exit(EXIT_FAILURE); } int ret_code = std::fread(B, sizeof(double), 1, fp); // read one value // current position: after reading one value std::printf("%.1f; read count = %d\n", B[0], ret_code); // print one value and ret_code if (std::fsetpos(fp, &pos) != 0) // reset current position to start of file { if (std::ferror(fp)) { std::perror("fsetpos()"); std::fprintf(stderr, "fsetpos() failed in file %s at line # %d\n", __FILE__, __LINE__-5); std::exit(EXIT_FAILURE); } } ret_code = std::fread(B, sizeof(double), 1, fp); // re- read first value std::printf("%.1f; read count = %d\n", B[0], ret_code); // print one value and ret_code std::fclose(fp); return EXIT_SUCCESS; } Output: 1.0; read count = 1 1.0; read count = 1 See also fgetpos gets the file position indicator (function) ftell returns the current file position indicator (function) fseek moves the file position indicator to a specific location in a file (function) http://cppreference.com 2022.07.31 std::fsetpos(3)
NAME | Synopsis | Parameters | Return value | Notes | Example | Output: | See also
Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=std::fsetpos&sektion=3&manpath=FreeBSD+Ports+15.0>
