02_ 파일 입출력
Programming/C 2015. 5. 4. 02:44* 텍스트 모드로 열어서 한문자씩 써 넣기
- fopen 함수의 두번째 인자를 "w"로 설정하면 텍스트 모로 파일을 저장한다.
* 텍스트 모드로 열어서 한 문자씩 읽어들이기
- fopen함수의 두번째 인자를 "r"로 설정하면 텍스트 모드로 파일을 읽어온다.
* 이진 모드로 열어서 한 문자씩 써 넣기
- 두번째 인자를 "wb"로 설정하면 이진 모드로 파일을 저장한다.
* 이진 모드로 열어서 한 문자씩 읽어들이기
- 두번째 인자를 "rb"로 설정하면 이진 모드로 파일을 읽어온다.
FILE구조체는 fopen( ) 이 지정한 파일을 읽어와서 각종 정보를 수록한다.
fopen( )이 실행되면 지정 파일을 읽어와서 메모리 상에 FILE형 구조체에 파일을 처리하는데 필요한 각종 정보를 채우고, FILE 구조체의 시작 주소를 반환한다.
파일 열기
- 파일을 사용하려면 fopen 함수를 이용해서 FILE 포인터의 주소를 할당해야 한다.
함수원형 : FILE *fopen( char *fname, char *mode );
반환값 : 파일 열기가 성공하면 FILE 포인터를 반환, 실패하면 NULL 값 반환
기능 : fname에 해당하는 파일을 mode에 따라 읽어온다.
모드 |
처리내용 |
파일 있을 경우 |
파일 없을 경우 |
"r" |
읽기(read) |
정상처리 |
NULL 값 반환 |
"w" |
쓰기(wirte) |
이전 내용 덮어씀 |
새 파일 생성 |
"a" |
추가(append) |
이전 내용 뒤에 추가 |
새 파일 생성 |
"r+" |
읽고 씀(갱신) |
정상처리 |
NULL 값 반환 |
"w+" |
읽고 씀(갱신) |
이전 내용을 버림 |
새 파일 생성 |
"a+" |
추가를 위해 읽고 씀 |
이전 내용 뒤에 추가 |
새 파일 생성 |
r+, w+, a+ 모드로 파일을 열면 해당 파일에 대해 읽고 쓰기가 동시에 가능해진다.
모드 |
처리 내용 |
"rb", "wb", "ab" |
Binary 파일 읽기, 쓰기, 추가 |
"r+b" 혹은 "rb+" |
Binary파일 읽고 씀(갱신) |
"w+b" 혹은 "wb+" |
Binary 파일 읽고 씀(갱신) |
"a+b" 혹은 "ab+" |
Binary 파일에 추가를 위해 읽고 씀 |
이진 모드는 텍스트 모드 문자뒤에 b를 추가한다.
파일 닫기
- 파일 사용이 끝나면 반드시 fclose( )를 이용해서 FILE포인터를 해제해 주어야한다.
함수원형 : int fclose( FILE *fp );
반환값 : 파일 닫기 성공하면 0을 반환, 실패하면 EOF 반환
기능 : fp가 가르키는 파일을 닫는다.
파일 핸들과 파일 버퍼
파일 핸들
- 파일 개방하면 내부적으로 파일에 0 이후 정수 값이 부여된다.
각종 입출력함수들은 이 번호를 이용해서 여러 파일에 대한 입출력을 수행한다.
이 정수를 파일 핸들(FILE HANDLE)이라고 한다.
파일 핸들중에 0,1,2는 표준 입출력 파일에 할당되며, 나머지는 사용자가 파일을 열어 사용할 수
있음...
파일 버퍼
- 파일에 입출력되는 자료를 임시적으로 보관하는 메모리를 가리킨다.
파일 출력은 버퍼에 먼저 출력이 되며, 버퍼가 꽉 차게되면 비로소 실제 파일에 데이터가 출력이
된다. 마찬가지로 입력할때도 버퍼가 꽉차면 읽어들인다.
- 파일 버퍼의 장점은 음.. 버퍼가 크면 디스크에 입출력하는 횟수가 줄어들게 된다는 것이다.
fflush( )함수는 원하는 시점에 버퍼에 있는 내용을 모두 다 비울 수 있다.
파일 입출력 함수
- fgetc( )
함수 원형 : int fgetc(FILE *fp);
반환 값 : 성공하면 읽어온 문자를 반환하고, 실패하거나 파일의 끝이면 EOF 반환한다.
기능 : 파일 fp로부터 한 문자 입력
- fputc( )
함수 원형 : int fputc(int ch, FILE *fp);
반환 값 : 성공하면 출력문자 ch를 반환하고, 에러가 발생하면 EOF 반환한다.
- fgets( )
함수 원형 : char fgets(char *str, int num, FILE *fp);
반환 값 : 성공하면 str을 반환하고, 실패하면 NULL을 반환
기능 : 파일 fp로부터 최대 num 바이트 만큼 문자열을 읽어서 str에 저장한다.
- fputs( )
함수 원형 : int fputs(const char *str, FILE *fp);
반환 값 : 성공하면 음수가 아닌 값이 반환되고, 실패하면 EOF가 반환된다.
기능 : 파일 fp에 문자열 str을 출력한다.
- fscanf( )
함수 원형 : int fscanf( FILE *fp, const char *format );
반환 값 : 성공하면 전송 바이트 수를 반환하고, 실패하면 EOF 반환
기능 : 파일 fp로부터 format 양식으로 입력받는다.
- fprintf( )
함수 원형 : int fprintf(FILE *fp, const char *format );
반환 값 : 성공하면 전송바이트 수 , 실패하면 음수 반환
기능 : 파일 fp에 format 양식으로 출력
- fread( )
함수 원형 : size_t fread(void *buffer, size_t size, size_t num, FILE *fp );
반환 값 : 읽어들인 객체 수 반환, 만약 0을 반환하면 읽은 것이 없거나 파일의 끝,or Error
기능 : 파일 fp에서 num개의 객체( 각 객체는 size바이트 크기)를 buffer가 가리키는 버퍼로
읽어 들인다.
- fwirte( )
함수 원형 : size_t fwrite(void *buffer, size_t size, size_t num, FILE *fp);
반환 값 : 쓰인 객체의 수를 반환, 만약 에러 발생하면 num보다 작은 값이 반환
기능 : buffer가 가리키는 버퍼에서 num개의 객체(각 객체는 size 바이트 크기)를
fp파일에 출력한다.
'Programming > C' 카테고리의 다른 글
포인터(기초) (0) | 2015.06.03 |
---|---|
memset() (0) | 2015.05.16 |
01_파일 입출력 (0) | 2015.05.04 |
01_기본 자료형 (0) | 2015.05.02 |
memset , memcpy, memmove (0) | 2015.05.01 |