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 オブジェクトを指すポインタであり、この FILE オブジェクトはストリームを識別します。
- pos-- これは fpos_t オブジェクトを指すポインタであり、このオブジェクトには以前 fgetpos によって取得された位置が含まれます。
戻り値
成功した場合、この関数はゼロ値を返し、そうでなければ非ゼロ値を返し、グローバル変数を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("これにより以前の内容が上書きされます", fp);
fclose(fp);
return(0);
}
int main ()
{
FILE *fp;
fpos_t position;
fp = fopen("file.txt","w+");
fgetpos(fp, &position);
fputs("Hello, World!", fp);
fsetpos(fp, &position);
fputs("これにより以前の内容が上書きされます", fp);
fclose(fp);
return(0);
}
上記のプログラムをコンパイルして実行してみましょう。これによりファイルが作成されます。file.txt、その内容は次のとおりです。最初に私たちはfgetpos()関数を使用してファイルの初期位置を取得し、次にファイルに書き込みます。Hello, World!、そして私たちはfsetpos()関数を使用して書き込みポインタをファイルの先頭にリセットし、ファイルを次の内容に書き換えます:
これは以前の内容を上書きします。
それでは、以下のプログラムを使用して上記のファイルの内容を確認しましょう:
例
#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);
}
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);
}