2016년2학기 고급컴퓨터프로그래밍및실습 (36342-02)
LAB #9 입출력 라이브러리 (파일 입출력을 중심으로)
1
함수의 리턴 값 받지 않기
텍스트 파일 만들기, 읽기, 쓰기 텍스트 파일의 끝 알아보기
난수를 사용한 테스트 데이터 생성 방법
실습 내용
2
(실습1) int f( ) 에서 리턴 값 받지 않기
이 프로그램을 직접 실 행시켜 보시오.
함수가 값을 리턴한다 고 해도 그 값을 꼭 받 을 필요는 없다는 것을 알 수 있습니다.
3
(실습2) int scanf( ) 사용해 보기
다음 프로그램을 작성하고 실행시켜 보시오. 어떤 경우에 (1) 또는 (2)가 출 력될까요? 직접 확인해 보세요.
4
1 2 3
정수 이외의 값을 입력해 보세요.
예) 1 hello c
(복습1) 파일 읽기
5
파일 생성하여 저장해 놓기
텍스트 화일을 다음과 같이 만들어, 지금 작성 중인 c 프로그램이 있는 폴더에 넣어 둔다.
6
(실습3) 파일에서 한 줄 읽기
방금 작성한 infile.txt 에서 한 줄을 읽어서 화면에 출력하는 프로그램을 작 성하시오.
7
입력 파일
화면 출력
(실습4) 파일 모두 읽기
infile.txt 에 숫자가 5개 있다는 것을 알고 있으므로, for loop 을 사용하여 숫자 5개를 모두 읽고, 그 결과를 화면에 출력하는 프로그램을 작성하시오.
8
(실습5) 파일 모두 읽기
infile.txt 에 저장되어 있는 숫자의 개수를 모른다고 가정하고, 프로그램을 작성해 보시오.
fscanf( ) 가 반환하는 값을 활용해 보시오.
예) while (fscanf( ) == 1) { }
파일에 몇 줄이 있었는지 그 값을 함께 출력해 보시오.
9
(복습2) 파일에 쓰기
10
이 프로그램은 infile.txt 의 첫 줄을 읽어서 result.txt 화일에 저장한다.
(실습6) 파일 출력
infile.txt 에 들어 있는 정수를 모두 읽어서, 그대로 result.txt 화일에 출력하 도록 해 보시오.
11
(실습7) 파일 출력
data.txt 화일에는 정수가 저장되어 있다. 이 화일을 읽어서 양수들은
positive.txt 에 저장하고, 음수들은 negative.txt 에 저장하는 프로그램을 작 성하시오.
12
(실습8) 한 줄에 5개씩 출력하기
infile.txt 에 숫자를 18개를 넣어 두고, 이 숫자들을 읽어서 result.txt 파일에 출력하도록 해 보시오. 이번에는 한 줄에 5개의 숫자가 출력 되도록 해 보시오.
13
힌트 : 숫자를 한 개씩 읽으면서 %4d 로 출력한다.
숫자를 읽을 때마다 카운터 (counter, 정수 변수 1개) 를 증가시키고, 카운터가 5의 배수일 때마다
출력하면서 줄을 바꾼다. 즉 “\n”를 포함한다.
(실습9) 텍스트 파일 만들기
0, 1, 2, … , 100 까지의 숫자를 옆의
그림에서와 같이 생성하여 data.txt 파일에 저장하는 프로그램을 작성하시오.
(힌트) for 루프를 돌면서 for 루프 변수인 i 값을 파일에 출력해 본다.
14
(실습10) 텍스트 파일 읽기
(실습 9)에서 만든 파일의 숫자들을 모두 읽은 후, 그 평균을 계산하여 화면 에 출력하는 프로그램을 작성하시오. 이 프로그램은 파일에 숫자가 몇 개 들어 있는지 사전에 모른다고 하자.
15
(실습11) 성적 계산하기
score.txt 는 학생들의 국어, 영어, 수학 과목의 시험 점수가 저장되 어 있는 파일이다. (다음과 같이 score.txt를 만드시오.) 한 행에는 한 학생의 이름과 그 학생의 국어, 영어, 수학 점수가 적혀있다.
score.txt 를 읽어서 각 학생의 성적 평균을 구한 후, grade.txt 에 저 장하는 프로그램을 작성하시오.
16
(실습12) 난수 생성 프로그램 1
다음 프로그램을 5회 실행시키면서 그 결과를 비교해 보시오.
또한 <솔루션 탐색기> <외부 종속성> 안에 보이는 <stdlib.h> 에서 RAND_MAX 가 어떤 값으로 정의되어 있는지 살펴보시오.
17
rand( ) 함수를 쓰기 위해
생성될 난수의 최대값
난수 생성 함수의 호출
(실습13) 난수 생성 프로그램 2
난수 생성을 할 때마다 다른 값이 생성되도록 하려면 난수열의 첫 째 원소값을 달리 주어야 한다. 이를 위해 srand( ) 를 사용한다.
18
time ( ) 함수 사용하기 위해
srand( ) 를 호출하면 rand( ) 에 첫 값을 준다. srand( ) 는 프로그램에서 한 번만 호출하면 된다.
실행시켜 보시오!!!
난수 생성 프로그램 3
생성되는 난수들의 범위를 지정해 보자.
19
0 32767
0 99 y = rand( ) % 100;
min max
y = rand( ) % (max-min+1) + min;
(실습14) 난수 생성
(프로그램 1) 0~99 사이의 난수 10개를 생성하여 정수 배열 a[10]에 저장해 놓고, 배열의 값을 화면에 출력하시오.
(프로그램 2) min = 100, max = 499 사이의 난수 10개를 생성하여, 프로그램 1과 같은 작업을 하시오.
20
(실습15) 학생 점수 파일 만들어 보기
student-name.txt 파일에는 학생 이름이 한 줄에 하나씩 10명 저장되어 있다. 이 학생들의 숙제1, 숙제2, 숙제3의 성적을 가상으로 만들어서 exam.txt 파일에 아래와 같이 저장하려고
한다. 숙제1의 점수는 30~50 사이의 정수로 하고, 숙제2의 점수는 50~80 사이의 정수로 하고,
숙제3의 점수는 40~100 사이의 정수로 되도록 random number
생성을 통해 파일을 만들어 보시오.
21