Presentation is loading. Please wait.

Presentation is loading. Please wait.

C언어 프로그래밍의 이해 Ch12. 표준 입출력.

Similar presentations


Presentation on theme: "C언어 프로그래밍의 이해 Ch12. 표준 입출력."— Presentation transcript:

1 C언어 프로그래밍의 이해 Ch12. 표준 입출력

2 목차 12.1 문자 입출력 12.2 문자열 입출력 12.3 포맷화된 콘솔 입출력 printf() scanf()
Ch12. 표준 입출력 목차 12.1 문자 입출력 12.2 문자열 입출력 12.3 포맷화된 콘솔 입출력 printf() scanf() 2

3 12.1 문자 입출력 가장 간단한 콘솔 입출력 함수 이 함수들에 대한 헤더 파일은 STDIO.H getchar() 함수
화면에 문자를 출력하는 putchar() 이 함수들에 대한 헤더 파일은 STDIO.H getchar() 함수 특정 키가 입력될 때 까지 기다린 후 이것의 값을 리턴하고, 입력된 키는 또한 자동적으로 화면으로 반향 정수형을 리턴하도록 선언 오류가 있으면 getchar()는 EOF을 리턴 STDIO.H에 정의되며, 일반적으로 -1 int getchar(void); int putchar(int c); 3

4 12.1 문자 입출력 putchar() 함수 화면의 현재 커서 위치에 문자를 출력 하나의 단일 문자만을 출력하는 함수
단일 문자와 관련된 내용만 올 수 있으며, 문자열 데이터 등은 올 수 없음 putchar()함수는 출력할 문자를 리턴하거나 또는 오류가 있으면 EOF을 리턴 STDIO.H에 정의되며, 일반적으로 -1 4

5 12.1 문자 입출력 따라하기1 Ch12. 표준 입출력 //키보드에서 문자들을 입력하고, 대 소문자 반대로 출력
#include <stdio.h> #include <ctype.h> void main(void) { char ch; printf("Enter some text (type a period to quit).\n"); do { ch = getchar(); if(islower(ch)) ch = toupper(ch); else ch = tolower(ch); putchar(ch); } while(ch!='.'); printf("\n"); } system Enter . Enter 5

6 Ch12. 표준 입출력 12.1 문자 입출력 getchar()의 문제점 ANSI C 표준은 원래의 UNIX버전 C와 일치할 수 있도록 getchar()를 정의 getchar()는 ENTER가 입력될 때 까지 입력된 내용을 임시 저장 이러한 입력을 라인-버퍼(line-buffered) 입력이라고 하며, 입력된 문자들이 실제로 프로그램에 전달되기 위해서는 ENTER키를 눌러야 함 buffer가 비어 있으면 enter를 치기 전까지 buffer에 쌓아 두었다가, ENTER를 치면 buffer의 값을 하나 꺼냄 getchar()는 사용 중인 컴파일러에서 한번 입력하고 결과를 받는 등의 상호 동작(interactive) 환경에서는 유용하지 않을 수 있음 6

7 Ch12. 표준 입출력 12.1 문자 입출력 변형된 getchar() getchar()함수가 상호동작 프로그램에서 유용하지 않을 수 있다면, 프로그래머는 키보드에서 문자를 읽을 때 다른 방법을 원할 수도 있을 것 두 개의 가장 공통적인 변형된 문자 입력함수는 getch()와 getche() 함수들의 원형은 CONIO.H에 포함 getch() 함수 키보드로부터 단일 문자 즉시 입력(화면 출력 안 함) getche() 함수 키보드로부터 단일 문자 즉시 입력(화면 출력 함) int getch(void); int getche(void); 7

8 12.1 문자 입출력 따라하기2 Ch12. 표준 입출력 //getchar() 대신에 getch()를 사용하는 예제
#include <stdio.h> #include <conio.h> #include <ctype.h> void main(void) { char ch; printf("Enter some text (type a period to quit).\n"); do { ch = getch(); if(islower(ch)) ch = toupper(ch); else ch = tolower(ch); putchar(ch); } while(ch!='.'); printf("\n"); } System. System. 8

9 Ch12. 표준 입출력 12.2 문자열 입출력 표준 콘솔에서 문자들의 열(즉, 문자열)을 읽고 쓰기 위한 콘솔 표준입출력 함수가 gets()와 puts() gets() 함수 키보드로부터 입력된 문자들의 열을 읽어 자신의 인자에서 지적하고 있는 주소로 저장 Enter (Carriage return)키가 입력될 때까지 키보드에서 문자들을 입력 캐리지 리턴은 문자열의 일부가 아니며, 대신, gets()는 널 문자(null terminator)를 끝에 붙이고 입력 ENTER를 사용하기 전까지는 백스페이스 키를 이용하여 잘못 입력된 문자들을 수정할 수 있고, 공백 문자 등 입력 가능 여기서 str은 사용자로부터 문자들을 받은 문자 배열 gets()를 위한 원형 및 정의는 STDIO.H에 포함 char *gets(char *str); 9

10 12.2 문자열 입출력 따라하기3 Ch12. 표준 입출력 //문자열을 배열 str로 읽고, 그 길이를 출력
#include <stdio.h> #include <string.h> void main(void) { char str[80]; gets(str); printf("Length is %d\n", strlen(str)); } system Enter 10

11 12.2 문자열 입출력 puts() 함수 자신의 문자열 인자와 뉴 라인를 화면에 출력
Ch12. 표준 입출력 12.2 문자열 입출력 puts() 함수 자신의 문자열 인자와 뉴 라인를 화면에 출력 Tab을 위한 ‘\t' 처럼 백 슬래쉬 코드도 인식 문자열만을 출력하기 때문에, puts()에 대한 호출은 printf()호출보다 훨씬 간단하며 빠르게 실행 숫자들을 출력하거나 포맷 변환 등 같은 서식 있는 출력 등을 할 수 없음 puts()함수는 최적화된 코드가 중요할 때 주로 사용 오류가 발생할 때 EOF(End of File)를 리턴 일반적으로 -1 오류가 발생하지 않으면, 음이 아닌 숫자 값을 리턴 int puts(const char *str); 11

12 12.2 문자열 입출력 따라하기4 Ch12. 표준 입출력 #include <stdio.h>
void main(void) { puts("hello"); } 12

13 12.2 문자열 입출력 표준 콘솔 문자 및 문자열 입출력 함수 요약 getchar() getche() getch()
키보드에 문자 읽기: 캐리지 리턴을 기다린다. getche() 문자를 반향하고 읽기: 캐리지 리턴을 기다리지 않는다. ANSI 표준 C에 의해서 정의되는 것이 아니라, 확장 getch() 반향하지 않고 문자 읽기: 캐리지 리턴을 기다리지 않는다. ANSI 표준 C에 의해서 정의되는 것이 아니라, 확장 putchar()  화면에 문자 쓰기 gets() 키보드에서 문자열 읽기 puts() 화면에 문자열 쓰기 13

14 12.3 표준화된 콘솔 입출력 함수 printf()와 scanf() 서식을 가진 형식화된 입출력을 제공
Ch12. 표준 입출력 12.3 표준화된 콘솔 입출력 함수 printf()와 scanf() 서식을 가진 형식화된 입출력을 제공 이들은 C언어 사용자의 제어에 의해 다양한 포맷으로 자료를 읽고 쓸 수 있다 printf()함수는 콘솔에 자료를 출력함 scanf()함수는 키보드로부터 자료를 입력 받음 두 개의 함수들은 문자, 문자열, 및 숫자 등을 포함하여 내정된 자료형들에 대해서 수행 14

15 12.3 표준화된 콘솔 입출력 – printf() printf()의 원형 printf()의 원형은 STDIO.H에 있음
Ch12. 표준 입출력 12.3 표준화된 콘솔 입출력 – printf() printf()의 원형 printf()의 원형은 STDIO.H에 있음 출력할 문자들의 수 또는 오류가 발생하면 음수를 리턴 control_string은 두 가지 유형의 항목들로 구성되는 제어문자열 첫 번째 유형은 화면에 출력될 문자들로 구성 두 번째 유형은 연속적인 인자들로 출력하는 방법을 정의하는 포맷 지정자(format specifier) 포맷 지정자는 퍼센트 기호(%)로 시작하고 그 다음에 포맷 코드를 사용 인자들의 수는 포맷 지정자들의 수와 정확하게 같아야 하며, 포맷 지정자와 인자들은 왼쪽에서 오른쪽으로 일대일 대응 int printf(const char *control_string, ...); 15

16 12.3 표준화된 콘솔 입출력 – scanf() scanf()는 범용의 콘솔 입력함수
Ch12. 표준 입출력 12.3 표준화된 콘솔 입출력 – scanf() scanf()는 범용의 콘솔 입력함수 모든 기본 자료형을 읽고, 숫자들에 대해서는 적절한 내부 포맷으로 자동적으로 변환 scanf()의 원형 scanf()의 원형은 STDIO.H에 있음 scanf()함수는 성공적으로 값을 할당한 자료 항목들의 수를 리턴 오류가 발생하면, scanf()는 EOF를 리턴 제어 문자열(control_string)은 인자 리스트의 변수들로 값을 읽는 방법을 결정 포맷 지정자 공란 문자 비 공란문자 int scanf(const char *control_string, ...); 16

17 Ch12. 표준 입출력 실습 과제 <1>따라하기1 ~ 따라하기4 실습 17

18 Q&A 18


Download ppt "C언어 프로그래밍의 이해 Ch12. 표준 입출력."

Similar presentations


Ads by Google