1 / 39

CHAPTER 12. 파일 입출력

CHAPTER 12. 파일 입출력. 파일의 기본 개념과 특징을 이해한다 . 파일 처리 과정을 공부한다 . 형식을 지정한 파일 입출력을 공부한다 . 문자 단위 입출력을 공부한다 . 이진 파일 입출력을 공부한다 . 파일의 임의 접근에 대해 공부한다. 12.0 개요 p.592. 키보드 입력과 모니터 출력의 단점 해결방법 파일 입력 , 파일 출력. 12.1 파일이란 ? p.593. 파일 (file ) 보조기억장치에 파일명으로 저장된 물리적인 데이터 집합체

cruz-moore
Download Presentation

CHAPTER 12. 파일 입출력

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. CHAPTER 12. 파일 입출력

  2. 파일의 기본 개념과 특징을 이해한다. • 파일 처리 과정을 공부한다. • 형식을 지정한 파일 입출력을 공부한다. • 문자 단위 입출력을 공부한다. • 이진 파일 입출력을 공부한다. • 파일의 임의 접근에 대해 공부한다.

  3. 12.0 개요 p.592 • 키보드 입력과 모니터 출력의 단점 • 해결방법 • 파일 입력, 파일 출력

  4. 12.1 파일이란? p.593 • 파일(file) • 보조기억장치에 파일명으로 저장된 물리적인 데이터 집합체 • 저장된 내용의 용도에 따라 프로그램 파일과 데이터 파일로 구분

  5. 12.1 파일이란? p.593 • 실험 데이터를 관리하는 프로그램(p.557)에서 • 50번의 실험 데이터를 입력시키고 여러 정보를 검색한 후 실행을 끝냈다고 가정하자. 지금까지 입력한 실험 데이터는 어떻게 될까? • 실행 프로그램이 끝나면 프로그램에서 사용하던 모든 기억장소가 해제되기 때문에 프로그램 실행 동안 저장되었던 실험 데이터는 모두 사라진다. • 프로그램 실행 도중에 전원이 나가면 결과를 확인하기도 전에 모든 데이터가 사라진다. • 실행결과 역시 프로그램 실행 창을 닫으면 모두 사라지므로 결과를 다시 확인하려면 프로그램을 실행해서 실험 데이터를 다시 입력하고 실행 창은 열어 둔 채로 계속 작업해야 한다.

  6. 12.1 파일이란? p.594

  7. 12.1 파일이란? p.594

  8. 12.2 파일 처리 과정 p.595 • 파일 입출력 네 단계

  9. 12.2.1 파일 포인터 선언하기 p.596 파일 포인터가 할당되어 있는 파일에 대해서만 읽기/쓰기가 가능

  10. 12.2.2 파일 열기 : fopen함수 p.597 • 파일을 열어야 읽기/쓰기가 가능 파일 포인터 fp가 data.txt 파일에 연결되고, fp를 이용하여 파일에 쓰기가 가능해짐

  11. 12.2.2 파일 열기 : fopen함수 p.597 • fopen함수가 실패 • NULL이 반환됨 • 지정한 이름의 파일이 존재하지 않아 읽기 모드로 열 수 없는 경우에는 다음과 같이 에러 처리 코드를 포함하는 것이 바람직 이 메시지 출력 다음 곧바로 프로그램 실행을 강제 종료하기 위해 exit(1);을사용할 수 있다.

  12. 12.2.4 파일 닫기 : fclose함수 p.599 • 프로그램 종료 전에 열린 파일들을 닫아야 한다. 몰라도 됨

  13. 12.2.3 파일 입출력 함수 p.599 • 파일 입출력을 위해 C 언어에서 제공하는 라이브러리 함수 두 가지만 정확히 알면 됨

  14. 12.3.2 형식을 지정한 파일 출력 : fprintf함수 p.591 • fprintf 함수 printf 함수를 사용한 모니터 출력 결과 그대로 파일에 씀

  15. 12.3.2 형식을 지정한 파일 출력 : fprintf함수 p.591

  16. p.591 필독

  17. 결과 해결 다음과 같이 키보드로 입력받은 나이를 파일에 쓰는 과정을 5번 반복하면 됨

  18. 12.3.2 형식을 지정한 파일 입력 : fscanf함수 p.603 • fscanf함수 파일의 데이터를 변환명세로 지정한 형식에 맞게 읽어옴 수 있다.

  19. 12.3.2 형식을 지정한 파일 입력 : fscanf함수 p.603

  20. 12.3.2 형식을 지정한 파일 입력 : fscanf함수 p.603 필독

  21. [프로그램 12-2]의 결과로 생성된 파일에 n명의 나이를 추가로 쓰기 p.605

  22. 12.3.4 파일의 끝 확인하기 다음에 필요할 때 참고할 중요한 내용 • 파일에 저장된 데이터 수를 정확히 모른다면? • feof 함수 등 파일의 끝을 확인하여 파일 읽기를 중단하는 방법을 사용해야 한다. • 12.3.4~12.5 생략 • 12.6 꼭 보기(보관) • 12.7~12,9생략

  23. 12.6.1 판매실적 우수자 파일 만들기 파일 처리에서 가장 기본적이고 많이 활용되는 예제 • 판매실적 우수자 파일 만들기 • 사원 번호와 자동차 판매 실적이 저장된 sales_report.txt파일에서 판매 실적이 30보다 큰 사원 번호와 판매 실적을 저장한 good.txt 파일 만들기 • “sales_report.txt” 파일 만들기 • 파일은 다른 프로그램 실행 결과로 만들어 지기도 하며 프로그래머가 직접 필요한 자료를 메모장 같은 편집기에서 직접 입력하여 저장해서 만들기도 한다. • 파일을 직접 만들기 • 자료를 읽을 순서에 맞게 자료형에 맞게 만들어야 하며마지막 자료 뒤에도 엔터키를 입력하는 것을 잊지 않도록 한다.

  24. 키보드로 입력받아 모니터로 출력한다면? • printf( “판매 실적 우수자 \n”); • printf( “---------------------\n”); • printf( “사원번호 판매수 \n”); • printf( “---------------------\n”); • for (i=1; i<=10; i++) • { • scanf( “%d %d”, &no, &sales); • if (sales > 30) • printf( “%5d %5d \n”, no, sales); • }

  25. fpr no 1203 sales 25

  26. 만일 판매실적을 내림차순으로 정렬하여 모니터로 출력하려면? • 정렬을 하기 위해서는 모든 자료가 배열에 저장되어야 하므로 파일에서 읽은 자료를 다음 그림과 같이 배열에 저장해야 한다. 배열을 정렬 후 모니터로 출력하기(printf) 또는 파일로 출력하기(fprinf)

  27. 파일 처리의 팁 • 22~36행 파일로 출력하는 fprintf 함수 부분은 일단 실행결과를 확인할 때까지는 39행과 같이 모두 printf 함수로 작성한 후 결과가 제대로 나오면 36행과 같이 fprintf 함수로 바꾸는 것도 결과를 쉽게 확인하는 방법 • 모니터와 파일 출력을 둘 다 하기 printf 함수로 출력하는 부분을 모두 복사하여 fprintf로 변경함으로써 모니터로도 결과를 출력하고 파일로도 출력 가능

  28. 12.6.2 학생 평점 파일을 읽어 평점 순위 파일 만들기 파일 처리에서 가장 기본적이고 많이 활용되는 예제 • 학생의 이름, 평점이 저장된 students.txt 파일에서 학생의 정보를 읽어와 평점에 대한 순위를 구한 후 결과를 rank.txt 파일에 저장하시오.

  29. 12.6.2 학생 평점 파일을 읽어 평점 순위 파일 만들기 • students.txt 파일 • 메모장에서 직접 만들어 프로젝트 폴더 안에 저장 • 학생의 수 • 이미 10명으로 알고 있는 상황에서 프로그램을 작성 • students.txt 파일의 내용을 읽어서 구조체 배열 s에 저장 • 모든 학생의 평점 정보가 있어야만 순위를 구할 수 있기 때문에 파일에서 읽은 정보를 모두 배열에 저장해야 함 • 순위 구하기 • 나의 평점 s[i].GPA보다 높은 평점의 개수가 n개  나의 순위 s[i].rank는 n+1등 이 방법은 평점을 정렬해서 순위를 구할 때 필요한 동점 처리를 하지 않아도 되므로 매우 편리하다. 일단 나의 순위를 1로 초기화(s[i].rank = 1;) 한후 다른 모든 학생들과의 평점을 차례대로 비교하면서 나보다 평점이 높은 경우를 만날 때마다 (if (s[i].GPA< s[u].GPA)) 나의 순위를 1 증가(s[i].rank++;)한다. • 나의 순위를 구하기 위해 모든 학생과 비교해야 하므로 for문이 필요하고, 모든 학생에 대해 순위를 구해야 하므로 다시 for문이 필요하므로 이중으로 중첩된 for문이 필요하다.

More Related