C언어 파일 입출력 1 파일 열기, 닫기
변수, 배열, 구조체들은 모두 메모리에 저장되므로 프로그램이 종료되면 데이터가 사라진다.
따라서 데이터를 영구적으로 보존하려면 보조 저장장치에 보관해야 한다.
C에서는 텍스트 파일과 이진 파일 두가지 파일 유형이 이다.
텍스트 파일은 사람이 읽을 수 있는 텍스트가 들어 있는 파일이다.
텍스트 파일은 연속적인 줄로 구성된다.
각 줄은 여러개의 문자들을 포함할 수 있으며 줄의 끝을 알리는 문자(\n)로 종료된다.
그에 비해 이진파일은 사람이 읽을 수 없다.
그리고 모든 데이터는 2진수 형태로 저장되므로 줄바꿈이 없다.
C언어어에서의 파일은
파일열기 - 파일읽기나 쓰기 - 파일 닫기
순으로 과정이 이루어진다.
파일 열기
파일을 열기 위해서는 우선 FILE 구조체로 변수를 선언해야 한다.
FILE은 stdio.h에 typedef을 이용해 선언된 구조체 자료형이다.
FILE *fp; // fp 포인터 변수 선언
fp = fopen(“test.txt”,”w”);
fopen 반환값이 주소값이기 때문에 포인터변수로 받는다
첫번째 매개 변수는 파일의 이름을 나타내는 문자열이다.
두번째 매개 변수는 파일을 여는 모드를 의미한다.
이진파일인지, 파일을 쓸것인가 읽은것인가를 나타낼 수 있다.
| “r” | 읽기모드로 파일을 연다. 파일이 없을 시 오류가 발생한다 |
| “w” | 쓰기 모드로 새로운 파일을 생성한다. 파일이 있을시 기존의 파일이 지워진다. |
| “a” | 추가 모드로 파일을 연다. 기존 파일이 있으면 파일이 끝에 데이터가 추가된다. 파일이 없으면 파일을 만든다 |
| “r+” | 일기모드로 파일을 연다. 쓰기 모드로 전환할 수 있다. 파일이 반드시 존재해야 한다 |
| “w+” | 쓰기 모드로 새로운 파일을 생성한다. 읽기 모드로 전환할 수 있다. 파일이 이미 존재하면 기존의 파일이 지워진다 |
| “a+” | 추가 모드로 파일을 연다. 읽기 모드로 전환 할 수 없다. 기존 파일이 있으면ㅇ 파일의 끝에 데이터가 추가된다 |
| “t” | 텍스트 파일 모드로 파일을 연다 |
| “b” | 이진 파일 모드로 파일을 연다 |
+가 붙은 모드는 읽기와 쓰기 변환이 가능하다.
fflush(),fsetpos(), fseek(), rewind() 같은 함수를 사용하면 된다.
파일 닫기
파일 닫기는 fclose()함수가 필요하다
fclose 함수는 stdio.h에 정의되어 있다.
close(fp) //fp는 포인터 변수