fsetpos
From cppreference.com
| ヘッダー <stdio.h> で定義 |
||
stream というファイルストリームのファイル位置指示子と、(もしあれば)マルチバイト解析状態を、pos が指す値に従って設定します。
新しい解析状態と位置を設定することに加えて、この関数を呼び出すと ungetc の効果が取り消され、設定されている場合、ファイル終了状態がクリアされます。
読み書きエラーが発生した場合、ストリームのエラー指示子 (ferror) が設定されます。
目次 |
[編集] パラメータ
| stream | - | 変更するファイルストリーム |
| pos | - | ファイル位置指示子の新しい値として使用する fpos_t オブジェクトへのポインタ |
[編集] 戻り値
成功した場合は 0、それ以外の場合はゼロ以外の値を返します。
[編集] 注記
ワイドストリームで末尾以外の位置にシークした後、次に出力関数を呼び出すと、ファイルの残りの部分が未定義になる可能性があります。たとえば、異なる長さのマルチバイトシーケンスを出力することによって。
[編集] 例
エラーチェック付きの `fsetpos`
このコードを実行
#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; }
実行結果の例
1.0; read count = 1 1.0; read count = 1
[編集] 参考文献
- C23標準 (ISO/IEC 9899:2024)
- 7.21.9.3 The fsetpos function (p: TBD)
- C17標準 (ISO/IEC 9899:2018)
- 7.21.9.3 The fsetpos function (p: TBD)
- C11標準 (ISO/IEC 9899:2011)
- 7.21.9.3 The fsetpos function (p: 337)
- C99標準 (ISO/IEC 9899:1999)
- 7.19.9.3 The fsetpos function (p: 303)
- C89/C90標準 (ISO/IEC 9899:1990)
- 4.9.9.3 The fsetpos function
[編集] 関連項目
| ファイル位置指示子を取得する (関数) | |
| 現在のファイル位置指示子を返す (関数) | |
| ファイル位置指示子をファイル内の特定の場所に移動する (関数) | |
| C++ ドキュメント for fsetpos
| |