名前空間
変種
操作

fsetpos

提供: cppreference.com
< c‎ | io
 
 
ファイル入出力
関数
ファイルアクセス
直接入出力
書式なし入出力
(C11以前)(C11およびそれ以降)
(C95)(C95)
(C95)
(C95)(C95)
(C95)
(C95)
書式付き入力
書式付き出力
ファイル位置操作
fsetpos
エラー処理
ファイルに対する操作
 
ヘッダ <stdio.h> で定義
int fsetpos( FILE *stream, const fpos_t *pos );

pos の指す値に従って、 C のファイルストリーム stream のファイル位置指示子およびマルチバイトパース状態 (もしあれば) を設定します。

新しいパース状態および位置の確立に加えて、この関数の呼び出しは ungetc の効果を取り消し、セットされていれば、ファイル終端ステータスをクリアします。

読み込みまたは書き込みエラーが発生した場合は、ストリームのエラー指示子 (ferror) がセットされます。

目次

[編集] 引数

stream - 変更するファイルストリーム
pos - ファイル位置指示子の新しい値として使用するための fpos_t オブジェクトを指すポインタ

[編集] 戻り値

成功した場合は 0、そうでなければ非ゼロの値。 失敗した場合は errno も設定します。

[編集] ノート

ワイドストリームで非終端位置にシークした後の、次の任意の出力関数の呼び出しは、例えば異なる長さのマルチバイトシーケンスを出力することによって、ファイルの残りを未定義の状態にします。

[編集]

fsetpos をエラーチェック付きで使用します。

#include <stdio.h>
#include <stdlib.h>
 
int main(void)
{
    /* Prepare an array of f-p values. */
    #define SIZE 5
    double A[SIZE] = {1.,2.,3.,4.,5.};
    /* Write array to a file. */
    FILE * fp = fopen("test.bin", "wb");
    fwrite(A,sizeof(double),SIZE,fp);
    fclose (fp);
 
    /* Read the f-p values into array B. */
    double B[SIZE];
    fp = fopen("test.bin","rb");
    fpos_t pos;
    if (fgetpos(fp,&pos) != 0)      /* 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 f-p value */
    /* current position: after reading one f-p value */
    printf("%.1f\n", B[0]);   /* print one f-p value */
 
    if (fsetpos(fp,&pos) != 0)   /* 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 f-p value */
    printf("%.1f\n", B[0]);                    /* print one f-p value    */
    fclose(fp);
 
    return EXIT_SUCCESS; 
}

出力:

1.0
1.0

[編集] 参考文献

  • C11 standard (ISO/IEC 9899:2011):
  • 7.21.9.3 The fsetpos function (p: 337)
  • C99 standard (ISO/IEC 9899:1999):
  • 7.19.9.3 The fsetpos function (p: 303)
  • C89/C90 standard (ISO/IEC 9899:1990):
  • 4.9.9.3 The fsetpos function

[編集] 関連項目

ファイル位置指示子を取得します
Original:
gets the file position indicator
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.

(関数) [edit]
現在のファイル位置指示子を返します
Original:
returns the current file position indicator
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.

(関数) [edit]
ファイル位置指示子をファイル内の指定の場所に移動します
(関数) [edit]