본문 바로가기

컴퓨터/언어,프로그래밍

C언어 :: 파일 입출력 함수

 
출처 : 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 : 파일 포인터


제주삼다수, 2L,... 오뚜기 진라면 매운... 상하목장 유기농 흰... 남양 프렌치카페 카... 고려인삼유통 홍삼 ... 종근당건강 오메가3... 요이치 카링 유무선...