Movatterモバイル変換


[0]ホーム

URL:


cppreference.com
Namespaces
Variants
    Actions

      std::fsetpos

      From cppreference.com
      <cpp‎ |io‎ |c
       
       
       
       
      Defined in header<cstdio>
      int fsetpos(std::FILE* stream,conststd::fpos_t* pos);

      Sets the file position indicator and the multibyte parsing state (if any) for the C file streamstream according to the value pointed to bypos.

      Besides establishing new parse state and position, a call to this function undoes the effects ofstd::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.

      Contents

      [edit]Parameters

      stream - file stream to modify
      pos - pointer to afpos_t object obtained fromstd::fgetpos called on a stream associated with the same file

      [edit]Return value

      0 upon success, nonzero value otherwise. Also, setserrno on failure.

      [edit]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.

      [edit]Example

      Run this code
      #include <cstdio>#include <cstdlib> int main(){// Prepare an array of floating-point values.constint 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 valuestd::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 valuestd::printf("%.1f; read count = %d\n", B[0], ret_code);// print one value and ret_codestd::fclose(fp); returnEXIT_SUCCESS;}

      Output:

      1.0; read count = 11.0; read count = 1

      [edit]See also

      gets the file position indicator
      (function)[edit]
      returns the current file position indicator
      (function)[edit]
      moves the file position indicator to a specific location in a file
      (function)[edit]
      C documentation forfsetpos
      Retrieved from "https://en.cppreference.com/mwiki/index.php?title=cpp/io/c/fsetpos&oldid=127258"

      [8]ページ先頭

      ©2009-2025 Movatter.jp