#include <stdio.h>
#include <stdlib.h>
void print_line(FILE* fp);
int main(void)
{
FILE* fp = fopen("test.txt", "r");
if (fp == NULL) {
fputs("ファイルオープンに失敗しました。\n", stderr);
exit(EXIT_FAILURE);
}
fpos_t pos;
print_line(fp);
if (fgetpos(fp, &pos) != 0) {
fputs("ファイルポジションの取得に失敗しました。\n", stderr);
exit(EXIT_FAILURE);
}
print_line(fp);
print_line(fp);
if (fsetpos(fp, &pos) != 0) {
fputs("ファイルポジションの移動に失敗しました。\n", stderr);
exit(EXIT_FAILURE);
}
print_line(fp);
if (fclose(fp) == EOF) {
fputs("ファイルクローズに失敗しました。\n", stderr);
exit(EXIT_FAILURE);
}
}
void print_line(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);
}