티스토리 뷰

파일 입출력 라이브러리(기초)

# 파일 입출력 기초

1. 기초
입출력 대상 : 입력과 출력의 대상이 파일인 경우
파일 입출력 : 텍스트 파일, 이진 파일
2. 입출력 과정
3. 스트림

# 파일 입출력 함수

1. 파일 열기
파일 입출력을 수행 하려면 먼저 fopen함수를 이용하여 파일을 열어야함
fopen 함수의 원형

FILE *fopen(const char *filename, const char *mode);
• filename : 파일 이름
• 리턴 값 : 생성된 파일 스트림의 파일 포인터를 리턴, 파일을 열 수 없으면 널 포인터를 리턴

디폴트 모드는 텍스트 파일
“r”
:입력용 파일을 연다. 파일이 없으면 열기 실패이다.
“w”
:출력용파일을연다.
:파일이 없으면 새로생성하고, 기존파일이 있으면 파일의 내용이모두사라진다.
“a”
:파일의 끝에 출력하는 용도로 파일을연다.
:파일이 없으면 새로생성 한다.
:파일의 어떤위치도 읽을 수 있지만, 쓰기는 파일의 맨끝에 만할수있다.
“r+”
:입출력용파일을연다. 파일이없으면열기실패이다.
“w+”
:입출력용 파일을 연다.
:파일이 없으면 새로생 성하고 기존파일이 있으면 파일의 내용이 모두 사라진다.
“a+”
:읽고 추가하는 용도로 파일을 연다. 파일이 없으면 새로 생성한다.
:파일의어떤위치도읽을수있지만, 쓰기는파일의맨끝에 만할수있다.
“t”
:텍스트 모드에서 입출력을 수행한다.
“b”
:바이너리 모드에서 입출력을 수행한다.
2. 파일 닫기
파일 입출력이 끝나면 fclose함수를 호출해서 반드시 파일을 닫아야함
fopen 함수의 원형

int fclose(FILE *stream);
:stream : 파일 포인터
:리턴 값 : 파일 닫기가 성공하면 0을 리턴하고,실패하면 EOF(-1)을 리턴

int fgetc(FILE *fp); 파일에서한 문자를입력받는다.
int fputc(int c, FILE *fp); 파일로한 문자를출력한다.
char *fgets(char *str, int n, FILE *fp); 파일에서 한 줄의 문자열을 입력 받는다.
int fputs(const char *str, FILE*fp); 파일로 한 줄의 문자열을 출력한다.
int fscant(FILE *fp, …); 형식 문자열을 이용해서 파일에서 입력받는다.
int fprint(FILE *fp, …); 형식 문자열을 이용해서 파일로 출력한다.
3. 파일 입출력
1) fgetc, fputc

#include 
int main( void)
{
    FILE *fp;
    char ch;
    if ( fp = fopen( “./main.c”, “r”)) {
        while( EOF != (ch= fgetc( fp))) putchar( ch);

        fclose( fp);
    }
 return 0;
}
2) fgets, fputs
파일로부터 한 줄의 문자열을 입력받거나 출력할 때 사용
char *fgets(char *str, int n, FILE *stream);
int fputs(const char *str, FILE *fp)

- fgets
str
:읽은 문자열을 저장할 문자 배열의 주소
:char *fgets(char *str, int n, FILE *stream);
n
:자 배열의 크기
stream
:입력용 파일 포인터
리턴 값
:파일로 부터 문자열을 최대n-1개만큼(또는줄바꿈문자까지) 읽어서 str에저장
:에러를 만나거나 EOF를 만나면 NULL을 리턴

- fputs
str
:저장할 문자열
:int fputs(const char *str, FILE *fp)
fp
:출력용 파일 포인터
리턴 값
:저장한 문자 수

3. 기타 함수
1) ferror 함수
파일 입출력 시 발생하는 에러를 확인

int ferror(FILE *stream);
• 리턴 값 :
- 스트림에 에러가 발생했으면 0이 아닌 값을 리턴
- 에러가 발생하지 않았으면 0을 리턴

2) feof 함수
파일의 끝인지를 검사

int feof(FILE *stream);
• 리턴 값 :
- 읽는 위치가 파일의 끝이면 0이 아닌 값을 리턴
- 읽는 위치가 파일의 끝이 아니면 0을 리턴
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/09   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30
글 보관함