프로그램에서 파일을 사용하기 위해서는 파일을 열어야 하고, 파일에 대한 사용이 끝나면 닫아야 한다.
파일을 열때 담당하는 함수가 fopen 인데, path 파일을 모드 형태로 열고, 파일 포인터를 반환하는데 이는 다른 입출력 함수에서 사용된다.
mode |
설명 |
r |
읽기 전용, 파일이 반드시 존재해야 함 |
w |
쓰기 전용, 파일은 없어도 되고 이미 존재한다면 기존 내용은 삭제 |
a |
추가용, 파일이 없어도 되고 이미 존재한다면 기존 내용 뒤에 추가 |
rb |
바이너리 파일 읽기 전용 |
wb |
바이너리 파일 쓰기 전용 |
ab |
바이너리 파일 추가용 |
r+ |
읽기와 쓰기용 |
w+ |
쓰기와 읽기용 |
FILE *fp;
fp = fopen("input.txt", "r")
========================
현 작업 위치의 input.txt 파일을 읽기 전용으로 연다. (파일을 읽을 수는 있지만 수정하거나 지우지는 못한다)
FILE *fp;
fp = fopen("test\output.txt", "w");
===============================
현 작업 위치의 하위 위치인 work의 output.txt 파일을 쓰기 전용으로 연다 (파일에 다른 내용을 쓰는 것으로, 파일이 없으면 새롭게 생성, 있으면 기존 내용은 삭제된다)
FILE *fp;
fp = fopen("output.txt", "a");
==========================
output.txt 파일을 추가용으로 여는 것이다. (쓰기 전용과 달리 파일이 존재하면 기존 내용 뒤에 추가된다)
또한 사용이 끝난 파일은 닫는 것이 바람직한데, 이때 사용하는 함수가 fclose 함수이다.
FILE *fp;
fp = fopen("input.txt", "r");
fclose(fp);
fgetc 함수는 다음과 같은 형식으로 파일로부터 한 문자를 입력 받는다.
fputc 함수는 다음과 같은 형식으로 한 문자를 파일에 출력한다.
위의 함수를 이용한 프로그램은 다음과 같다.
02 행 : tolower 함수 사용을 위한 헤더 파일을 포함한다.
06, 07 행 : 파일 사용을 위한 파일 포인터를 선언한다.
09 행 : input.txt 파일을 읽기 전용으로 연다. (반드시 생성 되어 있어야 함)
10 행 : output.txt 파일을 쓰기 전용으로 연다. (없어도 됨)
15, 16 행 : 사용이 끝난 파일을 닫는다.
input.txxt 파일의 내용이다. 이를 09 행에서 불러온다.
output.txt 파일의 내용이다. 이를 09 행에서 불러온 내용을 13 행에서 tolower 함수를 이용하여 소문자로 변환하여 output.txt 에 저장한다.
fgets 함수는 다음과 같은 형식으로 파일로부터 데이터를 입력 받는다.
fputs 함수는 다음과 같은 형식으로 파일에 데이터를 출력한다.
'위 함수를 이용한 프로그램은 다음과 같다.
11 행 : ifp 즉, input.txt 파일로부터 최대 크키가 100인 한 행의 문자열을 입력받아 buf에 저장하고, NULL이 아니면 12행을 실행한다.
12 행 : buf에 저장된 문자열을 ofp 즉, output.txt 파일에 출력한다.
input.txt
output.txt
fscanf 함수는 다음과 같은 형식으로 서식을 갖춘 데이터를 입력 받는다.
fprintf 함수는 다음과 같은 형식으로 서식을 갖춘 데이터를 파일로 출력한
위 함수를 이용한 프로그램은 다음과 같다.
14 행 : input.txt 파일로부터 데이터를 10진 정수 형식으로 입력받아 num에 저장한다.
16 ~ 17 행 : ifp 파일로부터 데이터를 10진 정수 형식으로 읽어 data 배열에 저장한다.
첫번째 데이터는 data[0], 두번째 데이터는 data[1] ... num 번째 데이터는 data[num-1] 에 저장된다.
21 ~ 22 행 : data 배열에 정렬되어 저장된 데이터를 ofp 즉, output.txt 파일에 저장한다.
30 행 : 데이터를 정렬 하는 함수이다.
input.txt 첫 번째 위치한 데이터는 전체 데이터의 갯수를 말한다. 나머지 데이터들을 오름차순으로 저장한다.
input.txt 파일 output.txt 파일