⊙ 입출력 처리란? data를 입력장치로부터 program 내부로 읽어 들이거나

Slides:



Advertisements
Similar presentations
YES C 제 1 장 C 언어의 개요 1/34 제 1 장 C 언어의 개요 문봉근. YES C 제 1 장 C 언어의 개요 2/34 제 1 장 C 언어의 개요 1.1 프로그램과 C 언어의 특징 1.2 C 언어의 프로그램 구성 1.3 비주얼 C++ 통합 환경 들어가기.
Advertisements

스택 스택 추상자료형 스택 스택의 구현 스택의 응용 한빛미디어(주).
C 프로그래밍 기초.
제12장 표준 입출력과 파일 입출력.
[ 단원 12 ] 파일처리 부산대학교 남 태 우.
Linux/UNIX Programming
제 1장 C 언어의 소개.
쉽게 풀어쓴 C언어 Express 제16장 파일 입출력 C Express.
쉽게 풀어쓴 C언어 Express 제16장 파일 입출력 C Express.
-Part3- 제3장 콘솔 입출력과 파일 입출력.
프로그래밍실습 제 18 강.
C 프로그래밍 소개 숙명여대 창병모 2011 가을.
Chapter 10– 표준 함수(1) Outline 10.1 스트림과 파일 10.2 입출력 표준 함수
Department of Computer Engineering
C 프로그래밍 - 기본 비트 캠프.
제3장 추가 실습 3장 관련 C 언어 프로그래밍 실습.
쉽게 풀어쓴 C언어 Express 제18장 입출력과 라이브러리 함수 C Express.
데이터 파일 C 데이터 파일과 스트림(Stream) 텍스트 파일 처리
제5장 제어명령
처음으로 배우는 C 프로그래밍 제2부 기초 제5장 반복문.
6장. printf와 scanf 함수에 대한 고찰
쉽게 풀어쓴 C언어 Express 제16장 파일 입출력 C Express Slide 1 (of 23)
HW#1 Source 파일 제출 3.20(수)까지 제출 학번_이름_01.c
Part 14 파일 입출력 ©우균, 창병모 ©우균, 창병모.
Chapter 13 문자 데이터와 문자열 문자 데이터 문자열.
7. while 문의 흐름 제어.
Department of Computer Engineering
쉽게 풀어쓴 C언어 Express 제3장 C프로그램 구성요소 C Express.
21장. 문자와 문자열 처리 함수.
9장 파일 입출력.
처음으로 배우는 C 프로그래밍 제5부 추가적인 화제들 제 11 장 파일 처리.
Part 04 입출력과 전처리 ©우균, 창병모 이 슬라이드는 부산대학교 우균이 작성하였습니다. 오류나 수정할 사항 있으면 연락 주세요.
파일 기술자 복사 파일 기술자 복사 : dup(2) 파일 기술자 복사 : dup2(3)
12장 파일처리와 매크로 파일 입출력 함수 문자 입출력 함수 라인 입출력 함수 불록 입출력 함수 매크로.
Chapter 11 Strings.
Chapter 4. 보조자료 - 파일 입출력 파일의 기본 개념과 특징을 이해한다. 파일 처리 과정을 이해한다.
C언어 프로그래밍의 이해 Ch14. 파일 입출력.
Department of Computer Engineering
14주차.
10장 C 표준 파일 입출력 子曰 學而時習(실습?)之 不亦悅乎.
Chapter 13 Input/Output and Files
4장 제어문 선택문: if 문, if – else 문, switch 문
17강 파일처리함수(1) 강 의 내 용 파일 입출력의 개념 파일포인터를 이용한 입출력 파일 입출력 과정
18강 파일처리함수(2) 강 의 내 용 순차파일 만들기와 읽기 순차파일 입출력함수 랜덤파일 처리
2장 표준 입출력 표준 입출력 함수의 종류 형식화된 입출력 문자 입출력 문자열 입출력.
제2장 데이터형과 표준 입출력문 문봉근.
2019년 2월 24일 오후 4시 59분 제2장 표준 입출력 함수
Linux/UNIX Programming
11장. 1차원 배열 IT응용시스템공학과 김 형 진 교수.
제어문 & 반복문 C스터디 2주차.
3장. 변수와 연산자. 3장. 변수와 연산자 3-1 연산자, 덧셈 연산자 연산자란 무엇인가? 연산을 요구할 때 사용되는 기호 ex : +, -, *, / 3-1 연산자, 덧셈 연산자 연산자란 무엇인가? 연산을 요구할 때 사용되는 기호 ex : +, -, *, /
조 병 규 Software Quality Lab. 한국교통대학교
Chapter 05. 입출력 함수.
Linux/UNIX Programming
Fflush 사용이유 및 방법 [이유] 키보드에서 입력된 내용은 입력버퍼에 저장되었다가 Enter 키가 들어오면 프로그램으로 전달됨 이 때 입력버퍼에 있는 Enter 키도 프로그램으로 전달됨 그러므로 아래와 같은 프로그램에서 문자 하나를 입력해도 Enter키도 입력된 것으로.
6장 반복제어문 for 문 while 문 do while 문 기타 제어문.
파일 입출력.
-Part1- 제7장 반복문이란 무엇인가.
쉽게 풀어쓴 C언어 Express 제6장 조건문 C Express Slide 1 (of 28)
1학기 정리 지난 학기에 배운 내용을 복습해 본다..
실습과제 1번 생성된 파일 basic.txt를 프로젝트 폴더에서 메모장으로 열고 내용을 확인
9주차: Using Files and Others
3주차: Control Flow and Others
어서와 C언어는 처음이지 제16장.
개정판 누구나 즐기는 C언어 콘서트 제10장 문자열 출처: pixabay.
C 13장. 입출력 라이브러리 #include <stdio.h> int main(void) { int num;
C.
printf("Global Korea\n");
개정판 누구나 즐기는 C언어 콘서트 제12장 파일 입출력 출처: pixabay.
배열, 포인터, 함수 Review & 과제 1, 2.
Presentation transcript:

⊙ 입출력 처리란? data를 입력장치로부터 program 내부로 읽어 들이거나 memory에 있는 data를 출력장치로 내보내 주는 작업 입력 출력 입력장치 -------→ 프로그램 내부 -------→ 출력장치 (키보드,디스크,마우스) (메모리) (모니터,디스크,프린터) ⊙ header 파일이란? 각종 매크로나 함수들의 prototype(원형)을 내용으로 하고 있는 파일 어떤 함수를 사용하려면 그 함수의 prototype을 main()함수 위에 기재해 주어야 한다. 그래서 함수들의 prototype이 기재가 되어있는 header 파일들을 main()함수위에 #include <화일명.h> 라는 형식으로 기재한다 5.1 모니터 출력 함수(monitor output function) 종류: putchar(), puts(), printf() putchar()  문자상수 출력시 사용한다. (문자상수: ‘ ‘ 안에 표현되는 1byte글자) puts()  문자열상수 출력시 사용하며 자동 줄바꿈 기능이 있다. (문자열상수: “ “ 안에 표현되는 2byte이상의 글자) printf()  각종 출력 서식에 의해 숫자, 문자, 문자열등 모든 종류의 데이타를 출력하는 함수

1) putchar() 함수 ⑴ 화면에 한 문자 출력시켜주는 함수 ⑵ 형식 : putchar('문자'); 괄호속에는 문자상수, 문자변수, 정수상수, 정수변수, 수식 등을 기재할 수 있다. ⑶ 예제 #include<stdio.h> void main() { putchar('A'); putchar('a'); putchar('\n'); putchar('\\'); putchar(65); putchar(65+32); } #include<stdio.h> void main() { putchar(178); putchar(‘\a’); putchar(232); } 2) puts() 함수 ⑴ 화면에 문자열을 출력시켜주는 함수 ⑵ 형식 : puts("문자열"); +--> 문자열상수, 문자열변수 엄밀한 의미로는 주소값을 기재하게 되어있다. ⑶ 문자열 출력 후 자동으로 줄바꿈(line skip)을 한다. #include<stdio.h> void main() { puts(“MBC”); puts(“SBS”); puts(“박상훈”); }

△ 3) printf() 함수 ⑴ 화면에 문자나 문자열이나 숫자 등을 출력서식을 이용하여 출력시키는 함수 출력서식 : %s, %c, %d, %o, %x, %ld, %f, ... 출력대상 : 출력시키고자 하는 data(상수, 변수, 수식, 함수 등) ⑶ 단순 문자열 출력 -> printf("Hello!\n"); ***숫자 데이터 출력시 방 식 사 용 예 결 과 의 미 %자리수d printf(“%4d”, 12); △ 1 2 4자리 확보 후 뒤에서 앞으로 출력 %-자리수d printf(“%-4d”, 12); 4자리 확보 후 앞에서 뒤로 출력 %0자리수d printf(“%04d”, 12); 4자리 확보 후 빈 공백은 0을 출력 %d printf(“%d”, 12); 출력대상체 자리만큼만 확보한후 출력 *** %d에서 d대신에 o, x, u, ld, lx, lu도 사용 가능하다 [사용예] printf(“숫자는%5d입니다.” , 234); printf(“숫자는%-5d입니다.” , 234); printf(“%숫자는%05d입니다.”, 234); printf(“%숫자는%d입니다.” , 234); [결과] 숫자는 234입니다. 숫자는234 입니다. 숫자는00234입니다. 숫자는234입니다.

△ △△MBC ***문자 데이터 출력시 방 식 사 용 예 결 과 의 미 %자리수c printf(“%4c”, ‘A’); A 방 식 사 용 예 결 과 의 미 %자리수c printf(“%4c”, ‘A’); △ A 4자리 확보 후 뒤에서 앞으로 출력 %-자리수c printf(“%-4c”, ‘A’); 4자리 확보 후 앞에서 뒤로 출력 %c printf(“%c”, ‘A’); 출력대상체 자리만큼만 확보한후 출력 [사용예] printf(“문자는%3c입니다.” , ‘h’); printf(“문자는%-3c입니다.” , ‘h’); printf(“문자는%c입니다.” , ‘h’); [결과] 문자는 h입니다. 문자는h 입니다. 문자는h입니다. ***문자열 데이터 출력시 방 식 사 용 예 결 과 의 미 %자리수s printf(“%5s”, “MBC”); △△MBC 4자리 확보 후 뒤에서 앞으로 출력 %-자리수s printf(“%-5s”, “MBC”); MBC △△ 4자리 확보 후 앞에서 뒤로 출력 %s printf(“%s”, “MBC”); MBC 출력대상체 자리만큼만 확보한후 출력

***실수 데이터 출력시 형식) %a.bf  전체 a 자리수 확보한후 소숫점 이하 b 자리 만큼만 출력 b자리수 보다 소숫점 이하 부분이 더 크면 반올림 예1) printf(“ %6.2f ”, 23.5); 예2) printf(“ %6.2f ”, 123.5); 예3) printf(“ %6.2f ”, 23.557); 예4) printf(“ %6.2f ”, 234567.567); 예5) printf(“ %-7.2f ”, 23.5); 2 3 . 5 1 2 3 . 5 2 3 . 5 6 2 3 4 5 6 7 .

S B M 5.2 키보드 입력 함수(keyboard input function) 종류: getchar(), gets(), scanf() getchar()  문자 1byte 입력시 사용한다. 예) char M = getchar(); gets()  문자열 입력시 사용한다.(문자열 변수를 준비한다.) 예) char M[10]; gets(M); scanf()  각종 입력 서식에 의해 숫자, 문자, 문자열등 모든 종류의 데이타를 입력받는 함수 *** 입력함수들이므로 해당 함수가 호출되면 입력작업을 위해 화면에 커서가 정지한채 입력을 받으 려 한다. 1) getchar() 함수  문자 한 글자를 키보드(키보드버퍼)로 부터 입력 받는다. * SBM이라고 입력 했을경우의 키보드 버퍼의 모습 키보드 버퍼란? 버퍼(buffer: 임시기억장소)는 주변장치들을 위하여 메모리 상에 임시로 준비되는 기억공간을 말한다. 즉, 키보드를 누르면 해당 문자의 키값이 키보드 버퍼에 저장되며 입력함수를 이용하여 입력을 받아 가면 키보드 버퍼의 문자가 지워지게 된다. S B M

예제1) #include<stdio.h> void main() { char M; printf(“ 문자입력  ”); M = getchar(); if( M >= ‘A’ || M <= ‘Z’ ) printf(“\n 입력된 문자는 소문자 %c입니다.”, M); else if( M >= ‘a’ || M <= ‘z’ ) printf(“\n 입력된 문자는 소문자 %c입니다.”, M); else printf(“\n 알파벳이 아니군요..”); } [키보드 버퍼상태] 예제2) #include<stdio.h> void main() { char M,N; printf(“ 문자입력  ”); M = getchar(); N = getchar(); printf(“ 입력된 문자는 %c, %c 입니다.”, M, N); } 결과1) 문자입력 A 입력된 문자는 A, 입니다. 결과2) 문자입력 AB 입력된 문자는 A,B 입니다.

[키보드 버퍼상태] ABCDEFGH 예제2) #include<stdio.h> void main() { char M,N; getchar(); // A getchar(); // B getchar(); // C M = getchar(); //D getchar(); // E getchar(); //F N = getchar(); //G printf(“ 입력된 문자는 %c, %c 입니다.”, M, N); } // 키보드 버퍼를 비워주는 함수 fflush(stdin); // stdin  standard input device(표준 입력장치)

2) gets() 함수  문자열을 입력받기 위한 함수이다.  한줄 전체를 입력받는다.(공백도 데이터로 간주한다.)  문자열 변수(문자배열)를 준비한후 입력 받는다. 문자 배열 선언 char M[12]; gets( M ); “ABCD” 가 입력될 경우 M[0] M[1] M[2] M[3] M[4] M[5] M[6] M[7] M[8] M[9] M[10] M[11] M 번지 M[0] M[1] M[2] M[3] M[4] M[5] M[6] M[7] M[8] M[9] M[10] M[11] ‘A’ ‘B’ ‘C’ ‘D’ ‘\0’ M 번지 puts( M ); printf(“ %s “, M);

3) scanf() 함수  문자, 숫자, 문자열을 입력받기 위한 함수이다.  입력서식(%d, %f, %c, %s 등)을 이용하여 입력을 받는다.  입력서식부분에는 입력서식외에 아무것도 넣지 않는다.  printf()에서 사용되었던 출력서식 전부가 입력서식을 사용된다.  입력 대상체 부분에는 주소를 입력해야 한다. (& : 주소 연산자 이용) 문자 한글자를 입력 받을 경우( 공백및 엔터를 데이터로 취급하므로 유의) char M; //A 일경우 scanf(“%c”, &M); char M,N; //AB 일경우 scanf(“%c%c”, &M, &N); char M,N; //A B 일경우 scanf(“%c%*c%c”, &M, &N); [키보드 버퍼상태] A B C D %*c 란? 키보드 버퍼에 있는 버퍼 포인터를 우측으로 이동시키라는 의미로써 엔터를 읽지 않고 건너 뛰라는 의미의 기호이다. 즉, 공백이나 엔터를 읽지 않고 건너뛸 경우에 사용하는 기호이다.

단입력 5 5*1= 5 5*2= 10 5*3= 15 5*4= 20 5*5= 25 5*6= 30 5*7= 35 5*8= 40 5*9= 45 또?(y/n) y [입력함수 예제] 문) 구구단 에서 출력할 단을 입력받아 특정한 단을 출력하라. #include<stdio.h> #include<conio.h> void main() { char loop; int i,dan; do{ clrscr(); printf(“단입력 “); scanf(“%d”, &dan); //단을 입력받는다. for(i=1; i<=9 ; i++) printf(“\n%d*%d=%2d”, dan, i, dan*i ); printf(“\n또?(y/n) “); scanf(“%*c%c”, &loop); }while( loop==‘Y’ || loop==‘y’ ); } [키보드 버퍼상태] 5

5.3 파일 출력 함수 ⊙ buffered file 출력 함수 *** 파일출력처리순서*** 파일에 어떤 데이터를 출력하기 위해서는 파일을 보조기억장치상에 만들어 놓고 출력 작업을 수행하기 앞서 파일을 열어야만 한다. 그리고 외부화일에 어떤 데이터를 출력할 때는 외부 화일 이름을 직접 사용할 수 없고 이것 대신에 다른 이름을 사용하게 되는데 이를 파일변수라 하며, stream이라고도 한다. 파일을 열 때 file을 c:\tc30\work라는 directory에 생성할 경우 파일변수 = fopen("c:\\tc30\\work\\test.out“, ”w“); 라는 형식으로 기재한다. 1. 외부화일이름 대신에 사용할 파일 변수 선언 FILE *화일변수; 새로운 파일을 쓰기용 모드로 열면서 파일변수를 지정한다. 이때 쓰기용 모드(w)로 파일을 열면 새로운 파일이 하나 생긴다. 2. 파일변수 = fopen("화일명.확장명“, ”w"); 3. 파일에 출력작업을 수행한다. fputc('문자', 파일변수); fputs("문자열 및 제어문자“,파일변수); fprintf(파일변수,“문자열 및 출력서식 및 제어문자”,출력대상); 4. 출력작업이 모두 끝나면 파일을 닫아준다. fclose(화일변수);

1) fputc() 함수 ⑴ 파일에 하나의 문자를 출력시켜주는 함수 ⑵ 형식 : fputc('문자', 파일변수); 외부화일이름 대신에 사용할 파일 변수 선언 FILE *화일변수; 새로운 파일을 쓰기용 모드로 열면서 파일변수를 지정한다. 이때 쓰기용 모드(w)로 파일을 열면 새로운 파일이 하나 생긴다. 파일변수 = fopen("화일명.확장명“, ”w"); 파일에 출력작업을 수행한다. fputc('문자', 파일변수); fputs("문자열 및 제어문자“,파일변수); fprintf(파일변수,“문자열 및 출력서식 및 제어문자”,출력대상); 출력작업이 모두 끝나면 파일을 닫아준다. fclose(화일변수); 1) fputc() 함수 ⑴ 파일에 하나의 문자를 출력시켜주는 함수 ⑵ 형식 : fputc('문자', 파일변수); ex) FILE* out = fopen(“imsi.txt”, “w”); fputc(‘A’, out); fputc(‘B’, out); fputc(‘\n’, out); fputc(‘C’, out); fclose(out);  

2) fputs() 함수 ⑴ 파일에 문자열을 출력시켜주는 함수이다. puts() 함수처럼 line skip을 자동으로 하지 않는다. ∴ 줄을 바꾸어서 출력하고 싶을 경우에는 문자열에 개행문자(‘\n')를 포함시키면 된다. ⑵ 형식 : fputs("문자열 및 제어문자", 화일변수);  ex) FILE* out = fopen(“imsi.dat”, “w”); fputs(“MBC”, out); fputs(“KBS\n”, out); fclose(out); 3) fprintf() 함수 ⑴ 파일에 문자나 문자열 그리고 숫자 등을 출력서식을 이용하여 출력시켜 주는 함수이다. ⑵ 형식 : fprintf(화일변수, “문자열 및 출력서식 및 제어문자”, 출력대상체);   4) 프린터에 데이터 출력 파일출력함수를 이용하여 프린터에 출력시키며 파일출력함수에서 파일변수를 기재할 부분에 stdprn를 기재하면 프린터로 출력이 된다. 5) 화면(모니터)에 데이터 출력 파일출력함수를 이용하여 화면에 출력시키며 파일출력함수에서 파일변수를 기재할 부분에 stdout를 기재하면 화면으로 출력이 된다.

[test.out 파일에 출력될 내용] Aa 장미 꽃 6) 예제 #include<stdio.h> void main() { FILE *fp; fp=fopen("test.out","w"); fputc('A',fp); fputc('a',fp); fputc('\n',fp); fputs("장미\n",fp); fprintf(fp,"%s","꽃"); fclose(fp); } [test.out 파일에 출력될 내용] Aa 장미 꽃

5.4 파일 입력 함수  파일 출력함수와 동일한 준비 과정을 거치며 fopen함수의 open mode만 “r”로 바뀐다. 외부화일이름 대신에 사용할 파일 변수 선언 FILE *화일변수; 새로운 파일을 읽기용 모드("r")로 열면서 파일변수를 지정한다. 파일변수 = fopen("화일명.확장명“, ”r"); fgetc(), fgets(), fscanf() 등의 함수를 이용하여 데이터를 읽어들인다. fgetc(파일변수); fgets(문자열변수, 읽을글자수+1, 파일변수); fscanf(파일변수, "입력서식", &변수); 입력작업이 모두 끝나면 파일을 닫아준다. fclose(화일변수);  

fgetc() 예제 #include<stdio. h> #include<conio fgetc() 예제 #include<stdio.h> #include<conio.h> void main() { char mun ; FILE * in = fopen(“data.txt”, “r”); clrscr(); while( 1 ) { if( feof(in) ) break; mun = fgetc(in); printf(“%c”, mun); } fclose(in); } 1) fgetc() 함수 ⑴ 파일로부터 한 문자를 입력받는 함수 ⑵ 형식 : fgetc(파일변수); [data.txt 파일의 내용] FreeLec site good... fgetc() 예제 #include<stdio.h> void main() { char A,B,C; FILE * in = fopen(“data.txt”, “r”); A = fgetc(in); B = fgetc(in); C = fgetc(in); fclose(in); printf(“파일로 부터 입력된 문자는\ %c,%c,%c 입니다.”, A,B,C ); } *** feof(파일변수) 함수설명 *** 입력함수를 이용하여 파일에서 데이터를 입력 받을때 사용하는 함수로서 파일의 끝을 검사하는데 사용되는 함수이며 파일포인터가 파일의 끝에 있으면 참값을 그렇지 않으면 거짓값을 return한다.

2) fgets() 함수 ⑴ 파일로부터 문자열을 입력받는 함수 ⑵ 형식 : fgets(문자열변수, 읽을글자수+1의 크기 기재, 파일변수 ); fgets() 예제 #include<stdio.h> void main() { char M[10]; FILE * in = fopen(“data.txt”, “r”); fgets( M, 8, in ); fclose(in); printf(“파일로 부터 입력된 문자열은\ %s 입니다.”, M); } [data.txt 파일의 내용] FreeLec site good...

FreeLec site good... 23 985 0.25 3) fscanf() 함수 ⑴ 파일로부터 문자나 숫자 또는 문자열을 입력받는 함수 ⑵ 형식 : fscanf(화일변수, “입력서식”, &변수); ⑶ 파일에서 문자열을 %s 형식을 이용하여 읽어들일 때 원하는 개수 만큼의 글자만 읽어 들일 수도 있는데 이때는 입력 서식에 읽을 글자수를 정해 주면 된다. 만약, 공백(Space)이나 엔터( )를 만나 데이터를 읽고자 하는 글자수 만큼 덜 읽었더라도 데이터 구분자(공백(Space)이나 엔터( ))를 만나는 그 곳 까지를 하나의 문자열 데이터로 취급한다. 문자열 변수에는 변수이름 앞에 &를 기재하지 않고 읽어들인다. 숫자 data를 읽어들일 때 구분자는 하나 이상의 공백이나 엔터 로 구분한다. *** 파일에 미리 데이터를 저장해 놓고 사용하는 경우에는 데이터와 데이터 사이를 공백이나 엔터로 구분지어 놓고 입력시 자리수를 지정하지 않고 구분자(공백, 엔터)를 이용하여 입력 받는 것이 가장 바람직한 방법이다. scanf() 예제1 #include<stdio.h> void main() { char M[10]; FILE * in = fopen(“data.txt”, “r”); scanf(in, “%s”, M); fclose(in); printf(“파일로 부터 입력된 문자열은\ %s 입니다.”, M); } scanf() 예제2 #include<stdio.h> void main() { int su1, su2; FILE * in = fopen(“data.txt”, “r”); scanf(in, “%d%d”, &su1, &su2); fclose(in); printf(“파일로 부터 입력된 숫자는\ %d와 %d 입니다.”, su1, su2); } [data.txt 파일의 내용] FreeLec site good... [data.txt 파일의 내용] 23 985 0.25

예제 //test.cpp 화일의 내용을 읽어 모니터에 출력, 소문자를 대문자로 출력 #include<stdio.h> #include<conio.h> #include<stdlib.h> void main() { FILE *fp; char ch; fp=fopen("test.cpp", "r"); //test.cpp가 없으면 NULL을 return한다. if( fp == NULL ) printf("\"test.cpp\" 파일이 없습니다!\n"); printf("아무키나 누르면 프로그램 종료\n"); getch(); exit(1); //프로그램을 종료하는 함수로서 stdlib.h에 들어 있다. } clrscr(); while( 1 ) ch=fgetc(fp); if(ch != EOF) //EOF(End Of File : 파일의 끝에 위치한 문자) putchar(ch); if( ch>= 'a' || ch<= 'z‘ ) printf("%c", ch-32); else printf("%c", ch); fclose(fp);