프로그래밍/C,C++,C#

[C] fseek

Beginner:) 2025. 2. 26.
320x100

1. fseek란?

파일 데이터에서 특정 위치로 이동할 때 쓰는 함수이다.

탐색을 seeking한다고 하는데 file + seeking인거다.

 

int fseek(FILE *stream, long offset, int whence);

 

stream : 파일 포인터

offset : 이동할 바이트 수

whence : 기준 위치

return: 성공시 0, 실패시 -1

 

설명
SEEK_SET 파일의 시작을 기준으로 offset만큼 이동
SEEK_CUR 현재 위치를 기준으로 offset만큼 이동
SEEK_END 파일의 끝을 기준으로 offset만큼 이동

 

 

2. 사용 예시

함수 사용 예시

fseek(fp, 0, SEEK_SET);  // 파일의 처음으로 이동
fseek(fp, 0, SEEK_END);  // 파일의 끝으로 이동
fseek(fp, -10, SEEK_CUR); // 현재 위치에서 10바이트 뒤로 이동

 

파일 크기 구하기 예시

FILE *fp = fopen("example.txt", "r");
if (fp == NULL) {
    printf("파일을 열 수 없습니다.\n");
    return 1;
}
fseek(fp, 0, SEEK_END);
long size = ftell(fp);
fseek(fp, 0, SEEK_SET); // 다시 파일 처음으로 이동
fclose(fp);
printf("파일 크기: %ld 바이트\n", size);

 

특정 위치에서 쓰기 예시 (덮어쓰기)

FILE *fp = fopen("example.txt", "r+");
if (fp == NULL) {
    printf("파일을 열 수 없습니다.\n");
    return 1;
}
if (fseek(fp, 5, SEEK_SET) != 0) {
    printf("파일 위치 이동 실패\n");
    fclose(fp);
    return 1;
}
fputc('A', fp);          // 해당 위치에 'A' 기록
fclose(fp);
반응형

댓글