11 표준 입출력과 파일 입출력 데이터를 읽고 쓰는 다양한 방법 익히기!
이 장에서 다룰 내용 표준 입출력 함수 1 2 파일 입출력 함수
01_표준 입출력 함수 표준 입출력의 개념 표준 입력(stdin) : 키보드로 입력하는 것 [예] scanf() 표준 출력(stdout) : 모니터에 출력하는 것 [예] printf()
01_ 표준 입출력 함수 서식화된 입출력 함수 [예] printf(), scanf() 서식의 위치에 들어갈 내용
[기본예제 11-1] 서식화된 입출력 함수 사용 예 01 #include <stdio.h> 02 03 void main() 04 { 05 int a; 06 float b; 07 char s[10]; 08 09 printf("정수를 입력 : "); 10 scanf("%d", &a); 11 printf("실수를 입력 : "); 12 scanf("%f", &b); 13 printf("문자열을 입력 : "); 14 scanf("%s", s); 15 정수형, 실수형 변수 선언 문자열 배열 선언 정수 입력 실수 입력 문자열 입력(& 사용하지 않음)
[기본예제 11-1] 서식화된 입출력 함수 사용 예 16 printf("\n정수의 10진수 ==> %d\n", a); 17 printf("정수의 16진수 ==> %X\n", a); 18 printf("정수의 8진수 ==> %o\n", a); 19 printf("실수 ==> %10.3f\n", b); 20 printf("문자열 ==> %s\n", s); 21 } 정수 10진수, 정수 16진수, 정수 8진수, 실수, 문자열 출력
01_표준 입출력 함수 문자열 입출력 함수 printf()와 scanf() 함수 : 모든 데이터 형식의 입출력 담당 puts()와 gets() 함수 : 문자열의 입출력 담당
[기본예제 11-2] 문자열 입출력 함수 사용 예 01 #include <stdio.h> 02 03 void main() 04 { 05 06 char s[20]; 07 08 printf("문자열을 입력 : "); 09 gets(s); 10 11 puts(s); 12 } 문자열 배열 선언 문자열 입력 문자열 출력
01_표준 입출력 함수 문자 입출력 함수 getchar(), getch(), getche() 함수 : 문자 하나만 입력하는 기능 putchar(), putch() 함수 : 문자 하나를 출력하는 기능
[기본예제 11-3] 문자 입출력 함수 사용 예 ① 01 #include <stdio.h> 02 03 void main() 04 { 05 char ch; 06 07 ch = getch(); 08 putch(ch); 09 10 ch = getch(); 11 putch(ch); 12 13 ch = getch(); 14 putch(ch); 15 } 문자 1개 입출력 문자 1개 입출력 문자 1개 입출력
01_표준 입출력 함수
[기본예제 11-4] 문자 입출력 함수 사용 예 ② 01 #include <stdio.h> 02 #include <string.h> 03 04 void main() 05 { 06 char password[4] = "5678"; 07 [ ① ] input[4]; 08 int i; 09 10 printf("비밀번호 4글자를 입력하세요 : "); 11 for(i=0 ; i<4 ; i++) 12 input[i] = [ ② ] 13 14 if( strncmp(password, input, 4) == 0) 15 { 16 printf("\n비밀번호 통과~~\n"); 17 } 비밀번호는 ‘5678’로 고정시킴 char 입력받은 비밀번호를 저장하는 곳 숫자 4개를 받기 위해 반복문 실행 getch(); 글자 입력(안 보임) 입력한 네 글자가 비밀번호와 같을 때 ‘통과’ 출력
[기본예제 11-4] 문자 입출력 함수 사용 예 ② 18 else 19 { 20 printf("\n입력한 비밀번호 "); 21 19 { 20 printf("\n입력한 비밀번호 "); 21 22 for(i=0 ; i<4 ; i++) 23 [ ③ ] (input[i]); 24 25 printf(" 가 틀렸음\n"); 26 } 27 } 입력한 네 글자가 비밀번호와 다를 때 사용자가 입력한 내용 출력 putch
[기본예제 11-5] 문자 입출력 함수 사용 예 ③ 01 #include <stdio.h> 02 [기본예제 11-5] 문자 입출력 함수 사용 예 ③ 01 #include <stdio.h> 02 03 void main() 04 { 05 char ch; 06 07 ch = getche(); 08 09 ch = getche(); 10 11 ch = getche(); 12 } 문자 하나를 입력받고, 화면에도 보여줌 문자 하나를 입력받고, 화면에도 보여줌 문자 하나를 입력받고, 화면에도 보여줌
[기본예제 11-6] 문자 입출력 함수 사용 예 ④ 01 #include <stdio.h> 02 [기본예제 11-6] 문자 입출력 함수 사용 예 ④ 01 #include <stdio.h> 02 03 void main() 04 { 05 char ch; 06 07 printf("문자열을 입력하세요 : "); 08 ch = getchar(); 09 putchar(ch); 10 11 ch = getchar(); 12 putchar(ch); 13 14 ch = getchar(); 15 putchar(ch); 16 } 문자형 변수 선언 문자열을 입력받아 버퍼에 저장 첫번째 문자 출력 두 번째 문자 읽어오기 두 번째 문자 출력 세 번째 문자 읽어오기 세 번째 문자 출력
01_표준 입출력 함수
02_파일 입출력 함수 표준 입출력과 파일 입출력 함수의 차이 사용하는 함수가 다름 입출력 관련 장치가 다름
파일 포인터 = fopen(“파일 이름”, “열기 모드”); 02_파일 입출력 함수 파일 입출력 기본 과정 1단계 : 파일 포인터 선언 파일을 열기 위해 파일 포인터라고 하는 포인터 변수를 선언한다. 2단계 : fopen() 함수 파일을 열기 위해 함수를 사용 FILE *변수명; 파일 포인터 = fopen(“파일 이름”, “열기 모드”);
02_파일 입출력 함수 3단계 : 파일 처리 함수 4단계 : fclose() 함수 파일에 데이터를 쓰거나 파일로부터 데이터를 읽어올 수 있는 상태가 됨 4단계 : fclose() 함수 파일과 관련된 모든 작업이 끝나면 파일을 정상적으로 닫아야 한다. fclose(파일포인터);
fgets(문자 배열, 읽어올 최대 문자수, 파일 포인터); 02_파일 입출력 함수 파일을 이용한 입력 파일의 문자열 읽기 : fgets() 파일로부터 값을 입력받음 파일 포인터에 지정된 파일에서 문자열을 읽어 문자 배열에 대입 단, 읽어올 최대 문자열의 길이 = ‘읽어올 최대 문자수’ 보다 짧아야 함 fgets()와 puts()를 사용하여 파일의 내용을 모니터에 출력하는 과정 fgets(문자 배열, 읽어올 최대 문자수, 파일 포인터);
[기본예제 11-7] 파일을 이용한 입력 예 ① 01 #include <stdio.h> 02 03 void main() 04 { 05 06 char s[20]; 07 FILE *rfp; 08 09 rfp = fopen("c:\\data1.txt", "r"); 10 11 fgets(s, 19, rfp); 12 13 printf("파일에서 읽은 문자열 : "); 14 puts(s); 15 16 fclose(rfp); 17 } 문자열 배열 선언 파일 포인터 선언 파일 열기(“r”은 읽기 전용) 파일에서 내용 읽어들이기 화면에 문자열 출력 파일 닫기
fscanf(파일 포인터, “서식”, 입력할 매개변수들...); 02_파일 입출력 함수 서식을 지정하여 파일 읽기 : fscanf() 파일 포인터를 사용하는 것을 제외하고, scanf()와 사용법이 동일 c:\data2.txt 파일에 정수 5줄을 쓴 후, fscanf() 함수로 읽어와 숫자의 합을 구하는 프로그램 작성 과정 data2.txt 내용 작성 fscanf(파일 포인터, “서식”, 입력할 매개변수들...);
[기본예제 11-9] 파일을 이용한 입력 예 ③ 01 #include <stdio.h> 02 03 void main() 04 { 05 FILE *rfp; 06 int hap=0; 07 int in, i; 08 09 rfp = fopen("c:\\data2.txt", "r"); 10 11 for (i=0 ; i<5 ; i++) 12 { 13 fscanf(rfp, "%d", &in); 14 hap = hap + in; 15 } 16 파일 포인터 선언 합계 변수 선언 파일 열기(“r”은 읽기 모드) 5회 반복하면서 파일 포인터에서 숫자를 읽어와 합계를 누적
[기본예제 11-9] 파일을 이용한 입력 예 ③ 17 printf("합계 ==> %d\n", hap); 18 19 fclose(rfp); 20 } 합계 출력 파일 닫기
02_파일 입출력 함수 파일을 이용한 출력 파일에 문자열 출력 : fputs() 파일에서 데이터를 읽어와 화면에 출력하는 대신 파일에 내용을 씀 단, 파일 포인터에 지정된 파일에 문자열을 출력 파일을 쓰는 과정에도 4단계 적용 키보드를 통해 데이터를 입력받고, 파일에 출력하는 과정 fputs(입력할 데이터, 파일 포인터);
[기본예제 11-10] 파일을 이용한 출력 예 ① 01 #include <stdio.h> 02 03 void main() 04 { 05 char s[20]; 06 FILE *wfp; 07 08 wfp = fopen("c:\\data3.txt", "w"); 09 10 printf("문자열을 입력 : "); 11 gets(s); 12 13 fputs(s, wfp); 14 15 fclose(wfp); 16 } 문자열 배열 선언 파일 포인터 선언 파일 열기(“w”은 쓰기 모드) 키보드로 문자열을 입력받음 파일에 문자열 출력 파일 닫기
copy c:\windows\win.ini c:\data5.txt 02_파일 입출력 함수 도스 명령어 copy의 구현 주어진 파일을 복사하여 똑같은 파일을 하나 더 만드는 명령어 [시작][실행] 선택 후 ‘cmd’ 입력하여 명령 프롬프트 실행 명령어를 입력하면 win.ini 파일의 내용이 data5.txt 파일에 저장됨 파일의 복사 과정 copy 파일 1, 파일 2 copy c:\windows\win.ini c:\data5.txt
[응용예제 11-11] 파일을 이용한 출력 예 ② 01 #include <stdio.h> 02 03 void main() 04 { 05 char str[200]; 06 FILE *rfp; 07 FILE *wfp; 08 09 rfp = fopen("c:\\windows\\win.ini", "r"); 10 wfp = fopen("c:\\data6.txt", "w"); 11 12 for( ;; ) 13 { 14 fgets(str, 199, rfp); 15 최대 한 줄에 200자 사용 읽기용 파일 포인터 선언 쓰기용 파일 포인터 선언 읽기 모드로 파일 열기 쓰기 모드로 파일 열기 무한루프 읽기용 파일에서 한 줄 읽음
[응용예제 11-11] 파일을 이용한 출력 예 ② 16 if (feof(rfp)) 17 break; 18 19 [ ① ] 19 [ ① ] 20 } 21 22 fclose(rfp); 23 fclose(wfp); 24 } 파일의 끝이라면 for 문 종료 fputs(str, wfp); 읽기용 파일 닫기 쓰기용 파일 닫기
fprinft(파일포인터, “서식”, 출력할 매개변수들...); 02_파일 입출력 함수 서식을 지정하여 파일 출력 : fprintf() 파일에 숫자를 출력하는 경우, 서식을 지정할 수 있는 함수 사용이 더 편리함 printf() 함수와 사용법은 동일하지만, 파일 포인터를 지정한다는 차이가 있음 fprinft(파일포인터, “서식”, 출력할 매개변수들...);
[기본예제 11-12] 파일을 이용한 출력 예 ③ 01 #include <stdio.h> 02 03 void main() 04 { 05 FILE *wfp; 06 int hap=0; 07 int in, i; 08 09 wfp = fopen("c:\\data4.txt", "w"); 10 11 for (i=0 ; i<5 ; i++) 12 { 13 printf(" 숫자 %d : ", i+1); 14 scanf("%d", &in); 15 hap = hap + in; 16 } 파일 포인터 선언 합계 변수 파일 열기(“w”은 쓰기 모드) 5회 반복하면서 키보드에서 입력받은 숫자의 합계 누적
[기본예제 11-12] 파일을 이용한 출력 예 ③ 17 18 fprintf(wfp, "합계 ==> : %d\n", hap); 19 20 fclose(wfp); 21 } 합계를 파일에 씀 파일 닫기
요약 표준 입출력 함수 표준 입력 : 키보드로 입력하는 것으로, scanf(), gets(), getchar() 함수가 있음 표준 출력 : 모니터로 출력하는 것으로, printf(), puts(), putchar() 함수가 있음 표준 입출력 함수
요약 파일 입력 함수 : 키보드대신 파일에서 입력받는 함수로, fscanf(), fgets(), fgetc() 함수가 있음 파일 출력 함수 : 실행 결과를 파일에 출력하는 함수로, fprintf(), fputs(), fputc() 함수가 있음 파일 입출력 함수
요약 파일 입출력 과정
프로젝트 과제명은 자체 결정 (파일 입출력 기능 필수) 프로젝트 초안 중간 보고 발표 프로젝트 발표 프로젝트 초안 보고서 제출 보고서 내용 : 팀원 구성, 역할 분담 마감일 : 11월19일 초안 중간 보고서 제출 보고서 내용 : 팀원의 역할 분담, 일정관리, 통합 소스와 개별 소스의 플로우차트 발표 마감일 : 11월26일 중간 보고 발표 발표 내용 : 소스의 플로우 차트, 역할분담, 제안보고서 성취도 분석, 제출 내용 : 최종 결과물에 대한 소스 CD, 최종 보고서 발표일 : 12월3일 프로젝트 발표 프로젝트 과제명은 자체 결정 (파일 입출력 기능 필수)
IT CookBook for Beginner, C 언어 기초 11장 끝 www.themegallery.com Thank You ! IT CookBook for Beginner, C 언어 기초 11장 끝