<1 >
1
stream : 문자들의 흐름
file : 입출력이 가능한 모든것들에 대한 논리적 개념
2 file 을 사용하는 과정 : 스트림열기(fopen) -> 사용 -> 스트림 닫기(fclose)
<2>
1.
1)파일 열기 : FILE *fopen(const char *filename) , const char*mode);
*fimename: 읽어들일 file 이름
*mode : 파일에 대한 접근 방식
**file이 해당 프로젝트의 소스파일 안에 있을 경우 경로를 입력하지 않아도 된다.
2)mode : file 접근방식
"r": file을 읽기 전용으로 개방함 . 파일이 현재 존재 x 경우 에러가 발생했다는 의미로 NULL이 반환됨
"w": 현재의 내용을 파괴하고 쓰기 전용으로 개방함. 파일존재 x 경우 새로운 file 생성하고 쓰기전용으로 개방
"a" : 겹쳐쓰지 않고 기존 file 의 끝에 쓰기로 개방함. 파일존재 x 경우 새로운 file 생성하고 쓰기전용으로 개방
"r+": file 을 읽기와 쓰기용으로 개방함. 파일존재 x경우 에러가 발생했다는 의미로 NULL반환
"w+" : 현재의 내용을 파괴하고 읽기쓰기로 개방함. 파일존재 x경우 새로운 file을 생성하고 읽기쓰기용으로 개방
"a+" : 겹쳐쓰지 않고, 기존file의 끝에서 읽기, 쓰기로 개방함 파일존재 x 경우 새로운 file을 생성하고 읽기쓰기용으로 개방
3) 파일 닫기 : int fclose(FILE *fp);
fp: 읽어들임 작업을 마칠 file의 포인터
2. 파일 사용
1) file 출력 - 파일데이터 저장
-문자 : int fputc(int c, FILE *fp);
-서식화 출력 : int fprintf(FILE *fp, const char *format, ... );
-블록 출력 : size_t fwrite(const void *ptr, size_t size , size_t n, FILE *fp);
-문자열 출력 : int fputs(const char *s, FILE *fp);
2)file 입력 - 파일데이터 읽음
-한문자 입력 : int getc(FILE*fp);
-서식화 입력 : int fscanf(FILE *fp , const char*format,...);
-블록 입력 : size_t tread(void *ptr, size_t size, size_t n, FILE *fp);
-문자열 입력 : char *fgets(char *s, int n, FILE *fp);
3. 예
1) 입력 문자열 파일 쓰기
원래는 파일이 없었는데 w mode로 파일을 열어서 text파일이 생겼다.
결과 :
2) 파일 문자열 변수 저장
- file출력 과정에서 처음부터 0을 입력한 경우 :
test 파일이 없는 상태에서 시작했는데 test 파일이 생겨났고(파일여는과정에서 생김) 파일안에는 아무 내용도 없다.
- 여러 숫자 입력 :
-파일 출력 과정을 주석처리한 경우 : test파일이 생겨나지 않고 파일 입력 과정이 이뤄지지 않았다.