chapter 12 n.
Download
Skip this Video
Loading SlideShow in 5 Seconds..
CHAPTER 12. 파일 입출력 PowerPoint Presentation
Download Presentation
CHAPTER 12. 파일 입출력

Loading in 2 Seconds...

play fullscreen
1 / 39

CHAPTER 12. 파일 입출력 - PowerPoint PPT Presentation


  • 146 Views
  • Uploaded on

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

loader
I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
capcha
Download Presentation

PowerPoint Slideshow about 'CHAPTER 12. 파일 입출력' - cruz-moore


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.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript
slide2

파일의 기본 개념과 특징을 이해한다.

  • 파일 처리 과정을 공부한다.
  • 형식을 지정한 파일 입출력을 공부한다.
  • 문자 단위 입출력을 공부한다.
  • 이진 파일 입출력을 공부한다.
  • 파일의 임의 접근에 대해 공부한다.
12 0 p 592
12.0 개요 p.592
  • 키보드 입력과 모니터 출력의 단점
  • 해결방법
    • 파일 입력, 파일 출력
12 1 p 593
12.1 파일이란? p.593
  • 파일(file)
    • 보조기억장치에 파일명으로 저장된 물리적인 데이터 집합체
    • 저장된 내용의 용도에 따라 프로그램 파일과 데이터 파일로 구분
12 1 p 5931
12.1 파일이란? p.593
  • 실험 데이터를 관리하는 프로그램(p.557)에서
    • 50번의 실험 데이터를 입력시키고 여러 정보를 검색한 후 실행을 끝냈다고 가정하자. 지금까지 입력한 실험 데이터는 어떻게 될까?
      • 실행 프로그램이 끝나면 프로그램에서 사용하던 모든 기억장소가 해제되기 때문에 프로그램 실행 동안 저장되었던 실험 데이터는 모두 사라진다.
      • 프로그램 실행 도중에 전원이 나가면 결과를 확인하기도 전에 모든 데이터가 사라진다.
      • 실행결과 역시 프로그램 실행 창을 닫으면 모두 사라지므로 결과를 다시 확인하려면 프로그램을 실행해서 실험 데이터를 다시 입력하고 실행 창은 열어 둔 채로 계속 작업해야 한다.
12 2 p 595
12.2 파일 처리 과정 p.595
  • 파일 입출력 네 단계
12 2 1 p 596
12.2.1 파일 포인터 선언하기 p.596

파일 포인터가 할당되어 있는 파일에 대해서만 읽기/쓰기가 가능

12 2 2 fopen p 597
12.2.2 파일 열기 : fopen함수 p.597
  • 파일을 열어야 읽기/쓰기가 가능

파일 포인터 fp가 data.txt 파일에 연결되고,

fp를 이용하여 파일에 쓰기가 가능해짐

12 2 2 fopen p 5971
12.2.2 파일 열기 : fopen함수 p.597
  • fopen함수가 실패
    • NULL이 반환됨
    • 지정한 이름의 파일이 존재하지 않아 읽기 모드로 열 수 없는 경우에는 다음과 같이 에러 처리 코드를 포함하는 것이 바람직

이 메시지 출력 다음 곧바로 프로그램 실행을 강제 종료하기 위해 exit(1);을사용할 수 있다.

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

몰라도 됨

12 2 3 p 599
12.2.3 파일 입출력 함수 p.599
  • 파일 입출력을 위해 C 언어에서 제공하는 라이브러리 함수

두 가지만 정확히 알면 됨

12 3 2 fprintf p 591
12.3.2 형식을 지정한 파일 출력 : fprintf함수 p.591
  • fprintf 함수

printf 함수를 사용한 모니터 출력 결과 그대로 파일에 씀

p 591
p.591

필독

slide17

결과

해결

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

12 3 2 fscanf p 603
12.3.2 형식을 지정한 파일 입력 : fscanf함수 p.603
  • fscanf함수

파일의 데이터를 변환명세로 지정한 형식에 맞게 읽어옴 수 있다.

12 3 4
12.3.4 파일의 끝 확인하기

다음에 필요할 때 참고할 중요한 내용

  • 파일에 저장된 데이터 수를 정확히 모른다면?
    • feof 함수 등 파일의 끝을 확인하여 파일 읽기를 중단하는 방법을 사용해야 한다.
  • 12.3.4~12.5 생략
  • 12.6 꼭 보기(보관)
  • 12.7~12,9생략
12 6 1
12.6.1 판매실적 우수자 파일 만들기

파일 처리에서 가장 기본적이고 많이 활용되는 예제

  • 판매실적 우수자 파일 만들기
    • 사원 번호와 자동차 판매 실적이 저장된 sales_report.txt파일에서 판매 실적이 30보다 큰 사원 번호와 판매 실적을 저장한 good.txt 파일 만들기
    • “sales_report.txt” 파일 만들기
      • 파일은 다른 프로그램 실행 결과로 만들어 지기도 하며 프로그래머가 직접 필요한 자료를 메모장 같은 편집기에서 직접 입력하여 저장해서 만들기도 한다.
      • 파일을 직접 만들기
        • 자료를 읽을 순서에 맞게 자료형에 맞게 만들어야 하며마지막 자료 뒤에도 엔터키를 입력하는 것을 잊지 않도록 한다.
slide30
키보드로 입력받아 모니터로 출력한다면?
  • 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);
  • }
slide32

fpr

no

1203

sales

25

slide33

만일 판매실적을 내림차순으로 정렬하여 모니터로 출력하려면?

    • 정렬을 하기 위해서는 모든 자료가 배열에 저장되어야 하므로 파일에서 읽은 자료를 다음 그림과 같이 배열에 저장해야 한다.

배열을 정렬 후

모니터로 출력하기(printf)

또는

파일로 출력하기(fprinf)

slide34

파일 처리의 팁

    • 22~36행

파일로 출력하는 fprintf 함수 부분은 일단 실행결과를 확인할 때까지는 39행과 같이 모두 printf 함수로 작성한 후 결과가 제대로 나오면 36행과 같이 fprintf 함수로 바꾸는 것도 결과를 쉽게 확인하는 방법

    • 모니터와 파일 출력을 둘 다 하기

printf 함수로 출력하는 부분을 모두 복사하여 fprintf로 변경함으로써 모니터로도 결과를 출력하고 파일로도 출력 가능

12 6 2
12.6.2 학생 평점 파일을 읽어 평점 순위 파일 만들기

파일 처리에서 가장 기본적이고 많이 활용되는 예제

  • 학생의 이름, 평점이 저장된 students.txt 파일에서 학생의 정보를 읽어와 평점에 대한 순위를 구한 후 결과를 rank.txt 파일에 저장하시오.
12 6 21
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문이 필요하다.