fopen() & fclose() - 파일의 접근 모드 (r, w, a, r+, w+, a+), 파일 입출력 모드, 대표적인 표준 입출력 함수와 표준 파일 입출력 함수

CODEDRAGON Development/C, C++

반응형

 

 

   

fopen()함수와 fclose()함수

헤더파일

stdio.h

fopen()함수

파일 스트림을 생성하고 파일을 오픈

fclose()함수

파일 스트림을 닫고, 파일도 닫기

 

 

   

함수 원형

함수의 원형

설명

#include<stdio.h>

FILE* fopen (const char* filename, const char* mode);

  • 파일 스트림을 생성하고 파일을 오픈합니다.
  • 호출 실패의 경우: NULL 반환

#include<stdio.h>

int fclose (FILE* stream);

  • 파일을 닫습니다.
  • 호출 실패의 경우: EOF 반환

   

   

 

파일 스트림

'FILE* 구조체 포인터'를 이용

   

파일 스트림 생성 예

FILE* stream;

   

   

 

fopen( )의 인자

구분

인자명

설명

첫 번째 인자

filename

파일의 경로와 이름을 동시에 표현

두 번째 인자

mode

파일의 접근 모드 와 파일 입출력 모드 표현

   

 

 

파일의 접근 모드 (r, w, a, r+, w+, a+)

모드

설명

r

  • 읽기(read) 전용으로 파일을 오픈합니다.
  • 파일이 없거나 찾을 수 없는 경우에 호출 실패

w

  • 쓰기(write) 전용으로 파일을 오픈합니다.
  • 지정한 파일명이 있는 경우: 파일 내용을 모두 지우고 새로 만듭니다.
  • 지정한 파일명이 없는 경우: 새로운 파일을 생성 합니다.

a

  • 추가(append) 쓰기 전용으로 파일을 오픈합니다.
  • 지정한 파일이 있으면 파일의 끝에서부터 내용을 추가합니다.

r+

  • 파일을 읽고 쓰기 위해 오픈합니다.
  • 지정한 파일이 있는 경우: 기존의 내용을 덮어씁니다.
  • 지정한 파일이 없는 경우: 새로운 파일을 생성해서 데이터를 씁니다(저장).

w+

  • 파일을 읽고 쓰기 위해 오픈합니다.
  • 지정한 파일이 있는 경우: 파일의 내용을 모두 지우고 새 파일을 만듭니다.
  • 지정한 파일이 없는 경우: 새로운 파일을 생성 한다.

a+

  • 파일을 읽고 추가 쓰기 위해 오픈합니다.
  • 지정한 파일이 있으면 파일의 끝에서부터 내용을 추가합니다.
  • 나머지 기능은 r+와 같습니다.

   

   

 

파일 입출력 모드

모드

설명

t

텍스트 파일 모드 (text file mode)

b

바이너리 파일 모드 (binary file mode)

   

   

   

텍스트 모드의 경우 't' 생략 가능

FILE* stream;     

stream=fopen("C:\\workspace\\data.txt", "r"); 

FILE* stream;     

stream=fopen("C:\\workspace\\data.txt", "w");

FILE* stream;

stream=fopen("C:\\workspace\\data.txt", "rt");

FILE* stream;     

stream=fopen("C:\\workspace\\data.txt", "wt");

FILE* stream;     

stream=fopen("C:\\workspace\\data.txt", "ab");

   

   

 

대표적인 표준 입출력 함수와 표준 파일 입출력 함수

stream을 입력하는 함수(표준 파일 입출력 함수)인 경우는 stdin 또는 stdout 선택적 사용 가능합니다.

표준 입출력 함수

표준파일 입출력 함수

기능

헤어파일

int  getchar (void);

int  fgetc (FILE* stream);

문자 단위 입력

stdin

int  putchar (int c);

int  fputc (int c, FILE* stream);

문자 단위 출력

stdout

char* gets (char *s);

char* fgets (char *s, int n, FILE* stream);

문자열 단위 입력

stdin

int  puts (char* str);

int  fputs (const char* s, FILE* stream);

문자열 단위 출력

stdout

int  scanf (const char* format, …);

int  fscanf (FILE* stream, const char* format, );

자료형에 맞춘 입력

선택가능

int  printf (const char* format, …);

int  fprintf (FILE* stream, const char* format, );

자료형에 맞춘출력

선택가능

   

   

 

표준 파일 입출력 함수의 선택 적용 가능

   

입출력 Case

Case

입력

->

출력

Case 1

파일(stream)

->

파일(stream)

Case 2

파일(stream)

->

모니터(stdout)

Case 3

키보드(stdin)

->

파일(stream)

Case 4

키보드(stdin)

->

모니터(stdout)