출처 : http://blog.paran.com/isdev8587/4876504
1. 파일 구조체
typedef struct
{
int level; /* fill/empty level of buffer */
unsigned flags; /* File status flags */
char fd; /* File descriptor */
unsigned char hold; /* Ungetc char if no buffer */ int bsize; /* Buffer size */
unsigned char *buffer; /* Data transfer buffer */
unsigned char *curp; /* Current active pointer */
unsigned istemp; /* Temporary file indicator */
short token; /* Used for validity checking */
} FILE; /* This is the FILE object */
2. 파일 입출력 함수
(1) FILE *fopen(char *filename, char *access_mode)
: 파일 입출력을 위해 파일을 연다
- char *filename : 처리할 파일명
- char *access_mode : 입출력 처리 모드
access_mode |
입출력 처리모드 |
r |
읽기 용으로 연다. |
w |
파일을 생성하고 쓰기 용으로 연다. 파일이 이미 존재하면 그 파일은 없어진다. |
a |
추가용으로 연다. 파일이 없으면 생성하고 연다. |
r+ |
이미 존재하는 파일을 읽기 및 쓰기 용으로 연다. |
w+ |
파일을 생성하고 갱신용으로 연다. |
a+ |
파일을 추가용, 갱신용으로 연다. 파일이 없으면 생성한다. |
rb |
이진파일을 읽기 용으로 연다. |
wb |
이진파일을 쓰기 용으로 연다. |
ab |
이진파일을 추가용으로 연다. 파일이 없으면 생성한다. |
rb+ |
이미 존재하는 이진파일을 읽기 및 쓰기 용으로 연다. |
wb+ |
이진파일을 생성하고 갱신용으로 연다. |
ab+ |
이진파일을 추가용, 갱신용으로 연다. 파일이 없으면 생성한다. |
- 파일에 대한 정보를 채운 FILE 구조체, 에러 발생시 NULL 반환
(2) FILE *freopen(char *filename, char *access mode, FILE *stream)
: 다른 파일에 파일 포인터를 재할당한다.
- char *filename : 처리할 파일명
- char *access_mode : 입출력 처리 모드
- FILE *stream : 파일 포인터
- 파일에 대한 정보를 채운 FILE 구조체, 에러 발생시 NULL 반환
(3) int fclose(FlLE *stream)
: 해당 파일을 닫는다.
- FILE *stream : 닫고싶은 스트림을 가리키는 File 구조체 포인터
- 정상 실행 시 0 반환, 에러 발생시 EOF 반환
(4) int feof(FlLE *stream)
: 처리되고 있는 스트림이 파일의 끝인지를 체크한다.
- FILE *stream : 열려있는 파일의 포인터
(5) int fgetc(FILE * stream)
: 스트림으로 부터 다음 문자를 얻는다.
- FILE *stream : 열려있는 파일의 포인터
- 정상 실행 시 읽은 문자의 int값을 반환, 파일의 끝에 도달했거나 에러 발생 시 EOF 반환
(6) int fputc(char c, FILE * stream)
: 스트림에 문자를 쓴다.
- char c : 파일에 쓸 문자
- FILE *stream : 열려있는 파일의 포인터
- 정상 실행 시 파일에 적은 문자 반환, 에러 발생시 EOF 반환
(7) char *fgets(char * string, int num, FILE * stream)
: 스트림으로 부터 스트링을 얻는다.
- char * string : 읽은 데이터를 저장할 버퍼의 포인터
- int num : 읽을 바이트 크기의 최대값
- FILE *stream : 열려있는 파일의 포인터
- 정상 실행 시 읽은 문자열 반환, EOF를 만나거나 에러 발생시 NULL 반환
(8) int fputs(const char * string, FILE * stream)
: 스트림에 스트링을 쓴다.
- const char * string : NULL이 제거된 문자열
- FILE *stream : 열려있는 파일의 포인터
- 정상 실행 시 음수가 아닌 수 반환, 에러가 발생 시 EOF 값 반환
(9) int fscanf(FILE * stream, const char * format [ , argument , ...])
: 스트림으로 부터 정규화된 데이터를 읽는다.
- FILE *stream : 열려있는 파일의 포인터
- const char * format : 스트림을 읽을 형태, printf함수와 동일
- 읽은 아이템의 수를 반환한다.
(10) int fprintf(FILE * stream, const char * format [ , argument , ...])
: 스트림에 정규화된 데이터를 쓴다.
- FILE *stream : 열려있는 파일의 포인터
- const char * format : 스트림을 쓸 형태, printf 함수와 동일
- 정상 실행 시 파일에 적힌 문자들의 총 수를 반환, 에러 발생시 음수 반환
(11) int fread(void * buffer, size_t size, size_t count, FILE * stream)
: 스트림으로 부터 데이터 구조을 쓴다.
- void * buffer : 버퍼를 가리키는 포인터
- size_t size : 읽을 아이템의 사이즈
- size_t count : 읽을 아이템의 수
- FILE *stream : 열려있는 파일의 포인터
- 읽은 아이템의 수를 반환한다.
(12) size_t fwrite(const void * buffer, size_t size, size_t count, FILE * stream)
: 스트림에 데이터 구조를 쓴다.
- const void * buffer : 버퍼를 가리키는 포인터
- size_t size : 파일에 쓸 아이템의 사이즈
- size_t count : 파일에 쓸 아이템의 수
- FILE *stream : 열려있는 파일의 포인터
- 정상 실행 시 파일에 적힌 아이템의 총 수를 반환, 에러가 발생했다면 count의 값보다 작은 값이 반환된다
(13) int fseek(FlLE *stream, long offset, int origin)
: 파일 포인터를 특정 위치로 이동시킴
- FILE *stream : 파일 포인터
- long offset : 이동 바이트수
- int origin : 파일내의 기준위치
origin |
파일내의 기준위치 |
SEEK_SET |
0, 파일의 시작위치 |
SEEK_CUR |
1, 파일내의 현재 포인터 위치 |
SEEK_END |
2, 파일의 끝 |
- 성공하면 0, 오류 발생시 -1 반환
(14) long ftell(FILE *stream)
: 스트림 안에 현재 위치를 반환
- FILE *stream : 열려있는 파일의 포인터
- 현재의 위치를 long 형 데이터로 반환하거나, 실패하면 -1L을 반환
(15) void rewind(FILE *stream)
: 파일 포인터를 파일의 처음으로 옮김
- FILE *stream : 열려있는 파일의 포인터
(16) void clearerr(FlLE *stream)
: 스트림의 에러 증후를 제거한다.
- FILE *stream : 파일 포인터
(17) int ferror(FlLE *stream)
: 파일 입출력이 일어나는 동안 어떤 에러가 발생했는지 체크한다.
- FILE *stream : 파일 포인터
(18) int fflush(FlLE *stream)
: 입력 버퍼의 모든 문자를 파일 포인터 fp가 가리키는 파일에 출력. fp가 null인 경우는 입력 버퍼의 내용이 모두 사라짐
- FILE *stream : 파일 포인터
'컴퓨터 > 언어,프로그래밍' 카테고리의 다른 글
C언어 :: 주요 헤더파일... (0) | 2009.03.22 |
---|---|
로또당첨번호, 제 329회(09.03.21) 나눔로또 당첨번호 확인하기 ▶ (0) | 2009.03.22 |
C언어 :: malloc 사용 예 (0) | 2009.03.20 |
프로그램 배포하기(Setup 프로그램 만들기) (0) | 2009.03.20 |
정적 메모리 할당 vs 동적 메모리 할당 (0) | 2009.03.20 |