Chapter 5 Character Processing

Slides:



Advertisements
Similar presentations
Chapter 12. 배열. 배열  동일한 항목들이 동일한 크기로 연속적으로 메모리에 저장되는 구조  동일한 자료 유형이 여러 개 필요한 경우에 이용할 수 있는 자료 구조.
Advertisements

6 장. printf 와 scanf 함수에 대한 고찰 printf 함수 이야기 printf 는 문자열을 출력하는 함수이다. – 예제 printf1.c 참조 printf 는 특수 문자 출력이 가능하다. 특수 문자의 미 \a 경고음 소리 발생 \b 백스페이스 (backspace)
기본 자료형 순천향대학교 정보기술공학부 이 상 정. 자료형의 선언 컴퓨터프로그래밍 1 순천향대학교 정보기술공학부 이 상 정 3 자료형 선언 기본 자료형문자형 char 정수형 int 실수형 float double 형없음 void.
프로그래밍1 및 실습 (C언어) - 3장 기본자료형 (3.6부터 끝까지) -
제 3 장 변수와 자료형.
Power C++ 제6장 포인터와 문자열.
2장. 프로그램의 기본 구성. 2장. 프로그램의 기본 구성 2-1"Hello, World!" 들여다 보기 /* Hello.c */ #include int main(void) { printf("Hello, World! \n"); return 0;
제 1장 C 언어의 소개.
쉽게 풀어쓴 C언어 Express 제12장 문자와 문자열 C Express.
2014 ITA 8월 강의 C Programming -1주차- C언어 기초 정대진 ( )
C언어 프로그래밍의 이해 Ch12. 표준 입출력.
쉽게 풀어쓴 C언어 Express 제12장 문자와 문자열 C Express Slide 1 (of 28)
2주 강의 C에 대한 기본 (제 2장).
Report #2 - Solution 문제 #1: 다음과 같이 프로그램을 작성하라.
제3장 추가 실습 3장 관련 C 언어 프로그래밍 실습.
쉽게 풀어쓴 C언어 Express 제4장 변수와 자료형 C Express.
처음으로 배우는 C 프로그래밍 제2부 기초 제5장 반복문.
6장. printf와 scanf 함수에 대한 고찰
Chapter 13 문자 데이터와 문자열 문자 데이터 문자열.
변수와 자료형.
2주 강의 C에 대한 기본 (제 2장).
제 1 장 C 언어의 개요 Google 공동 창업자, 래리 페이지와 세르게이 브린.
윤성우의 열혈 C 프로그래밍 윤성우 저 열혈강의 C 프로그래밍 개정판 Chapter 02. 프로그램의 기본구성.
21장. 문자와 문자열 처리 함수.
8장 함수 함수의 필요성 라이브러리 함수와 사용자 정의 함수 함수의 정의, 원형, 호출 배열을 함수 인자로 전달 재귀호출.
컴퓨터 프로그래밍 기초 #02 : printf(), scanf()
6장. printf와 scanf 함수에 대한 고찰
2019년 1월 16일 오후 6시 15분 제 6 장 함수
제 3 장 상수와 변수
쉽게 풀어쓴 C언어 Express 제4장 변수와 자료형 C Express.
4장 제어문 선택문: if 문, if – else 문, switch 문
쉽게 풀어쓴 C언어 Express 제4장 변수와 자료형 C Express.
adopted from KNK C Programming : A Modern Approach
사용자 함수 사용하기 함수 함수 정의 프로그램에서 특정한 기능을 수행하도록 만든 하나의 단위 작업
2장 표준 입출력 표준 입출력 함수의 종류 형식화된 입출력 문자 입출력 문자열 입출력.
Chapter 2 Lexical Elements, Operators, and the C System
제2장 데이터형과 표준 입출력문 문봉근.
2019년 2월 24일 오후 4시 59분 제2장 표준 입출력 함수
C언어 프로그래밍의 이해 Ch13. 선행처리기와 주석문.
Chapter 10 Strings and Pointers
3장 상수 변수 기본 자료형 키워드와 식별자 상수와 변수 기본 자료형 형변환 자료형의 재정의.
컴퓨터 프로그래밍 기초 - 4th : 수식과 연산자 -
연산자 (Operator).
제어문 & 반복문 C스터디 2주차.
Chapter 04 자료 유형.
3장. 변수와 연산자. 3장. 변수와 연산자 3-1 연산자, 덧셈 연산자 연산자란 무엇인가? 연산을 요구할 때 사용되는 기호 ex : +, -, *, / 3-1 연산자, 덧셈 연산자 연산자란 무엇인가? 연산을 요구할 때 사용되는 기호 ex : +, -, *, /
처음으로 배우는 C 프로그래밍 제3부 함수 제 6 장 함수 작성.
프로그래밍 기초와 실습 Chapter 11 Recursion.
문자열과 배열 문자열 입출력 문자열 처리 함수 문자 처리 함수 문자열의 배열
Chapter 05. 입출력 함수.
6장 반복제어문 for 문 while 문 do while 문 기타 제어문.
컴퓨터 프로그래밍 기초 [01] Visual Studio 설치 및 사용방법
함수(Function) ◈ 함수의 개념 및 사용 이유 ◈ 함수 정의, 호출 및 선언 ◈ 지역변수와 전역변수 ◈ return 문
제 15 강 문자와 코드 shcho.pe.kr.
쉽게 풀어쓴 C언어 Express 제6장 조건문 C Express Slide 1 (of 28)
Homework #12 (1/2) 프로그램을 작성하고, 프로그램과 실행 결과를 프린트하여 제출한다.
쉽게 풀어쓴 C언어 Express 제6장 조건문 C Express.
C언어 프로그래밍의 이해 Ch03. 기본 자료형, 변수와 상수.
A Book on C, 3rd Ed. Al Kelley and Ira Pohl
컴퓨터 프로그래밍 기초 #13 : 문자열 Seong-Yun Choi
실습과제 (변수와 자료형, ) 1. 다음 작업 (가), (나), (다)를 수행하는 프로그램 작성
3주차: Control Flow and Others
박성진 컴퓨터 프로그래밍 기초 [03] 변수와 자료형 박성진
C 13장. 입출력 라이브러리 #include <stdio.h> int main(void) { int num;
Spring, 2019 School of CSE Pusan National University
C.
printf("Global Korea\n");
윈도우에서의 유니코드.
개정판 누구나 즐기는 C언어 콘서트 제13장 동적 메모리 출처: pixabay.
⊙ 입출력 처리란? data를 입력장치로부터 program 내부로 읽어 들이거나
Presentation transcript:

Chapter 5 Character Processing 프로그래밍 기초와 실습 Chapter 5 Character Processing

Contents The Data Type char The Use of getchar() and putchar() An Example: Capitalize The Macros in ctype.h Problem Solving: Repeating Characters Problem Solving: Counting Words

The Data Type char Char type 8bit의 ASCII code로 표현 총 256 개의 char 표현 가능 문자 또는 작은 수의 int로 표현 [Ex] printf(“%c”, ‘a’ ); /* a is printed */ printf(“%c%c%c”, ‘A’, ‘ B’, ‘C’ ); /* ABC is printed */ printf(“%d”, ‘a’ ); /* 97 is printed */ printf(“%c”, 97 ); /* a is printed */

Nonprinting and hard-to-print characters The Data Type char Escape sequence Nonprinting and hard-to-print characters Name of character Written in C Integer value alert backslash backspace carriage return double quote formfeed horizontal tab newline null character single quote vertical tab \a \\ \b \r \” \f \t \n \0 \’ \v 7 92 8 13 34 12 9 10 39 11

The Data Type char Escape sequence 모든 정수형 수식은 문자형태나 정수형태로 나타낼 수 있다. [Ex] printf(“\”ABC\” ”); /* “ABC” is printed */ printf(“’ABC’ ”); /* ‘ABC’ is printed */ [Ex] char c; int i; for ( i = ‘a’ ; i <= ‘z’; ++i ) printf(“%c”, i); /* abc … z is printed */ for ( c = 65; c <= 90 ; ++c ) printf(“%c”, c); /*ABC … Z is printed */ for ( c = ‘0’; c <= ‘9’ ; ++c ) printf(“%d ”, c); /* 48 49 50… 57 is printed */

The Data Type char [Ex] char c; c= ‘A’+5; printf(“%c %d\n”, c, c); for( c = ‘A’; c <= ‘Z’; c++ ) ; printf(“%c\t”,c); F 70 B 66 A B C D E … Z

The Use of getchar() and putchar() keyboard에서 문자를 읽는데 사용한다. Buffered scanf와 동일 - data의 read를 위해 Enter key의 입력이 필요하다 Enter key를 누르면 Enter key까지 포함한 입력되었던 모든 문자들은 stdin buffer로 보내진다. getchar() function은 문자들을 한번에 한문자씩 반환한다. c = getchar(); /* 한 char를 read하여 c에 입력 */

The Use of getchar() and putchar() [Ex] while((c = getchar()) == ‘ ’) ; if((c = getchar()) == ‘\n’) exit() ; while( (c = getchar()) == ‘ ’ || c ==’\n’ || c == ‘\t’ ) ; Read한character가 space라면 계속 skip Enter key를 press시 program종료 white spaces를 skip

The Use of getchar() and putchar() [Ex] #include <stdio.h> int main(void) { putchar(‘H’); putchar(‘a’); putchar(‘n’); putchar(‘D’); putchar(‘o’); putchar(‘g’); } putchar(‘ ‘)에 한 char만 사용가능 함. HanDong

The Use of getchar() and putchar() 키보드로 문자를 읽어서 두문자씩 출력하는 code [Ex] #include <stdio.h> int main(void) { int c; printf(“Enter a message:\n”); while (( c = getchar() ) != EOF) { putchar( c ); } return 0; EOF는 end-of-file의 뜻. Unix에서는 Ctrl + D 를 누르면 됨 Visual C++ 6.0 에서는 ctrl+c Enter a message: corea ꎠ ccoorreeaa (ctrl+D누름)

caps Program 소문자를 대문자로 변환하는 예제1 [Ex] #include <stdio.h> int main(void) { int c; printf(“Enter a message:\n”); while (( c = getchar()) != EOF ) if ('a' <= c && c <= 'z' ) putchar( c + 'A' - 'a' ); else if ( c == '\n') { putchar('\n'); } else putchar(c); return 0; Enter a message: corea ꎠ COREA (ctrl+D누름) c에 e라는 문자를 입력했다고 하면 ascii code에서 e는 101이다. 여기서 ‘A’-’a’ 는65-97의 값과 같다. 101+65-97=69 즉 E의 값이 나온다.

Portable caps Program 소문자를 대문자로 변환하는 예제2 [Ex] #include <stdio.h> #include <ctype.h> int main(void) { int c; printf(“Enter a message:\n”); while (( c = getchar()) != EOF ) if ( islower(c) ) putchar( toupper(c) ); else if ( c == '\n') { putchar('\n'); } else putchar(c); return 0; islower()와 toupper( )의 함수는 ctype.h란 header file 안에 정의되어있다. Enter a message: corea ꎠ COREA (ctrl+D누름)

The Macros in ctype.h ctype.h 헤더파일은 문자 인자를 검사하는 매크로들을 정의한다. Character macros Macro Nonzero (true) is returned if isalpha(c) isupper(c) islower(c) isdigit(c) isalnum(c) isxdigit(c) isspace(c) ispunct(c) isprint(c) isgraph(c) iscntrl(c) isascii(c) c is a letter c is an uppercase letter c is a lowercase letter c is a digit c is a letter or digit c is a hexadecimal digit c is a white space character c is a punctuation character c is a printable charcter c is a printable, but not a space c is a control character c is an ASCII code

Character macros and functions The Macros in ctype.h toupper() and tolower() functions Character macros and functions Function or macro Effect toupper(c) tolower(c) toascii(c) Changes c from lowercase to uppercase Changes c from uppercase to lowercase Changes c to ASCII code [Ex] int tolower(int c) ; /* c가 대문자라면 소문자가 리턴*/ int toupper(int c); /* c가 소문자라면 대문자가 리턴 */ #define _tolower(c) ( (c) + ‘a’ – ‘A’ ) /* 함수를 define하여 지정 */

Repeating Characters Problem Solving: Repeating Characters [Ex] #include <ctype.h> #include <stdio.h> void repeat(char, int); int main(void) { int i; const char alert = '\a', c = 'A'; repeat('B' - 1, 2); putchar(' '); for (i = 0; i < 10; ++i) { repeat(c + i, i); } repeat(alert, 100); putchar('\n'); return 0; } /* end of main */ void repeat(char c, int how_many) for ( i = 0; i < how_many; ++i) putchar(c); } /* end of repeat function */ AA B CC DDD EEEE FFFFF GGGGGG HHHHHHH IIIIIIII JJJJJJJJJ

Counting Words Word의 개수를 세는 Program printf( "Enter a message:\n"); [Ex] #include <stdio.h> #include <ctype.h> int found_next_word(void); int main(void) { int word_count = 0; printf( "Enter a message:\n"); while (found_next_word() == 1) ++word_count; printf( “ Number of words = %d\n", word_count); return 0; } /* end of main */ /* ( Continue….) */ found_next_word( )의 함수가 실행되어 1(단어를찾음)을 리턴하면 word_count를 1증가 시킨다.

Counting Words Word의 개수를 세는 Program /* ( Continued….) */ int found_next_word(void) { int c; while ( isspace( c = getchar() ) ) ; /* skip white space */ if( c != EOF ) { /* found a word */ while ( ( c =getchar() ) != EOF && !isspace(c) ); /* skip all except EOF and white space */ return 1; } return 0; empty statement이다. 단어를 읽을 때 공백을 skip하게하는 while 문이다. 두 번째 while문 의 생략 시 char의 count가 됨- 말하자면 그 다음 char가 space가 아니므로 count가 됨 Enter a message: Our father in heaven ꎠ (ctrl+D누름) 컴파일러에 따라 ctrl+z Number of words = 4

Counting Words 문자의 길이, 단어의 개수, 문자의 개수를 구하는 프로그램 [Ex] #include <stdio.h> main() { int len = 0, word = 1, character =0; char msg; printf("Enter a message: "); while ( (msg = getchar()) != '\n') len ++; /* (continue…… )*/

Counting Words 문자의 길이, 단어의 개수, 문자의 개수를 구하는 프로그램 /* ( continued ) */ if(( msg == ' ') || ( msg == '\n')) word++; else if(((msg >= 'a') && (msg <='z')) || ((msg >= 'A')&&(msg <= 'Z'))) character++; } printf("%d length.\n", len); printf("%d words.\n", word); printf("%d characters.\n", character); return 0; 공백이 들어갈 때마다 word를 증가시킴 영어단어의 범위에 들어갈 때마다 character를 증가시킴 단어와 단어 사이에 space가 여러 개 있는 경우는 다 word로 count됨 Tab key로 구분되는 경우는 1개의 단어로 간주 Enter a message: C programming ꎠ 13 length. 2 words. 12 characters.

수고하셨습니다 Character Processing