C-standard-library-c-function-fsetpos

提供:Dev Guides
移動先:案内検索

Cライブラリ関数-fsetpos()

説明

Cライブラリ関数 int fsetpos(FILE stream、const fpos_t * pos)は、指定された *stream のファイル位置を指定された位置に設定します。 引数 pos は、関数fgetposによって指定される位置です。

宣言

以下は、fsetpos()関数の宣言です。

int fsetpos(FILE *stream, const fpos_t *pos)

パラメーター

  • stream -これは、ストリームを識別するFILEオブジェクトへのポインタです。
  • pos -これは、以前fgetposで取得した位置を含むfpos_tオブジェクトへのポインターです。

戻り値

この関数は、成功するとゼロ値を返します。そうでない場合は、ゼロ以外の値を返し、グローバル変数 errno を正の値に設定します。これはperrorで解釈できます。

次の例は、fsetpos()関数の使用法を示しています。

#include <stdio.h>

int main () {
   FILE *fp;
   fpos_t position;

   fp = fopen("file.txt","w+");
   fgetpos(fp, &position);
   fputs("Hello, World!", fp);

   fsetpos(fp, &position);
   fputs("This is going to override previous content", fp);
   fclose(fp);

   return(0);
}

上記のプログラムをコンパイルして実行し、次の内容を持つファイル file.txt を作成しましょう。 まず、* fgetpos()関数を使用してファイルの初期位置を取得してから、_Hello、World!_をファイルに書き込みますが、後で fsetpos()*関数を使用して、ファイルし、次の内容でファイルを上書きします-

This is going to override previous content

今、次のプログラムを使用して上記のファイルの内容を見てみましょう-

#include <stdio.h>

int main () {
   FILE *fp;
   int c;

   fp = fopen("file.txt","r");
   while(1) {
      c = fgetc(fp);
      if( feof(fp) ) {
         break;
      }
      printf("%c", c);
   }
   fclose(fp);
   return(0);
}

上記のプログラムをコンパイルして実行し、次の結果を生成しましょう-

This is going to override previous content