개념 :
1. 파일 포인터를 내마음 대로 옮길수 있다.
2. 파일 끝부분 이상으로 기록할 경우. 파일 끝 다음으로 기록되어 의도하지 않게 값이 저장 안 될 수 있다.
3. 원형 과 파라메터
int fseek( FILE *stream, long offset, int origin)
stream : 파일
offset : 파일 포인터의 이동값(1 칸이 1byte)
origin : 어디서 부터 포일 포인터를 움직일지에 대한 플래그 값
origin 에 들어 갈수 있는 값
SEEK_SET (값 : 0) : 파일 포인터를 처음으로 부터
SEEK_CUR (값 : 1) : 현재 파일 포인터가 있는 곳 부터
SEEK_END (값 : 2) : 파일 끝부분 부터
offset 값은 - 와 + 부호를 가지고 전진과 후진을 할 수 있다.
example :
fseek(write, -3, SEEK_END)
-파일 끝부분 부터 처음 방향으로 3칸 간다.
fseek(write, 0, SEEK_SET)
-파일 포인터를 처음으로부터 끝방향으로 0칸 간다.
fseek(write, 8, SEEK_CUR)
-현재 파일 포인터가 있는 곳 부터 끝방향으로 8칸 간다.
소스 코드 : main.c
#include <stdio.h>
void main(void)
{
int returnValue = 0;
FILE *write = 0, *read = 0;
char szBuffer[256] = { 0, };
fopen_s(&write, "E:\\300\\112\\file.txt", "w+");
if (write == NULL)
{
puts("fail : create file");
}
else
{
printf_s("기록 전 파일 포인터의 위치 : %d\n", ftell(write));
fputs("write text", write);
puts("write text");
printf_s("기록 후 파일 포인터의 위치 : %d\n", ftell(write));
puts(" 파일 위치를 처음 이동");
returnValue =fseek(write, 6, SEEK_SET);
printf_s(" call fseek : 6, SEEK_SET 호출 후 파일 포인터의 위치 : %d\n", ftell(write));
fputs("call fseek : 6, SEEK_SET ", write);
fclose(write);
// 파일 읽기 모두로 생성하여 확인
fopen_s(&read, "E:\\300\\112\\file.txt", "r");
if (read == NULL)
{
puts("faild read file");
}
else
{
fgets(szBuffer, sizeof(szBuffer), read);
puts(szBuffer);
fclose(read);
}
}
}
결과
#c언어입분, #C언어, #fseek, #SEEK_SET, #SEEK_CUR, #SEEK_END, #파일포인터이동
'Programing - C > C Basic grammar ' 카테고리의 다른 글
114 파일 끝에 도달 했는지 검사와 파일 닫기(feof, fclose) (0) | 2017.12.24 |
---|---|
113 파일 포인터 현재 위치를 구하고 설정하기(fsetpos, fgetpos) (0) | 2017.08.25 |
111 파일 포인터를 처음으로 이동(rewind) (0) | 2017.08.11 |
110 파일 포인터의 현재 위치(ftell) (0) | 2017.08.11 |
109 파일 버퍼 비우기( fflush ) (0) | 2017.08.10 |