#include <stdio.h>
#include <stdlib.h>
void printLine(FILE* fp);
int main(void)
{
FILE* fp = fopen( "test.txt", "r" );
if( fp == NULL ){
fputs( "ファイルオープンに失敗しました。\n", stderr );
exit( EXIT_FAILURE );
}
fpos_t pos;
printLine( fp );
if( fgetpos( fp, &pos ) != 0 ){
fputs( "ファイルポジションの取得に失敗しました。\n", stderr );
exit( EXIT_FAILURE );
}
printLine( fp );
printLine( fp );
if( fsetpos( fp, &pos ) != 0 ){
fputs( "ファイルポジションの移動に失敗しました。\n", stderr );
exit( EXIT_FAILURE );
}
printLine( fp );
if( fclose( fp ) == EOF ){
fputs( "ファイルクローズに失敗しました。\n", stderr );
exit( EXIT_FAILURE );
}
}
void printLine(FILE* fp)
{
char buf[80];
if( fgets( buf, sizeof(buf), fp ) == NULL ){
fputs( "ファイルへの書き込みに失敗しました。\n", stderr );
exit( EXIT_FAILURE );
}
// 末尾の改行文字を取り除く
char* p = strchr( buf, '\n' );
if( p != NULL ){
*p = '\0';
}
puts( buf );
}