GSP
Quick Navigator

Search Site

Unix VPS
A - Starter
B - Basic
C - Preferred
D - Commercial
MPS - Dedicated
Previous VPSs
* Sign Up! *

Support
Contact Us
Online Help
Handbooks
Domain Status
Man Pages

FAQ
Virtual Servers
Pricing
Billing
Technical

Network
Facilities
Connectivity
Topology Map

Miscellaneous
Server Agreement
Year 2038
Credits
 

USA Flag

 

 

Man Pages
std::fsetpos(3) C++ Standard Libary std::fsetpos(3)

std::fsetpos - std::fsetpos


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.


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


0 upon success, nonzero value otherwise. Also, sets errno on failure.


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.

// 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;
}


1.0; read count = 1
1.0; read count = 1


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)

2022.07.31 http://cppreference.com

Search for    or go to Top of page |  Section 3 |  Main Index

Powered by GSP Visit the GSP FreeBSD Man Page Interface.
Output converted with ManDoc.