제 15 강 문자와 코드 shcho.pe.kr
같은 글자라도... OI 숫자로 보면 01 영문자로 보면 OI 한글로 보면 이
실습 CFL을 이용하여 getchar를 반복하게 한다. 입력에 각종 코드를 키를 입력하여 문자의 입력 시 실제 저장되는 정수 값이 어떻게 나오는지 표를 만들어보라.
궁금증 c = getchar(); 또는 c = 'a'; 에서 int c로 선언이 되었는데... 그럼 같은 c에 대해 c = 1; 도 되고 c = 'a'; 도 되나? 대체 정수와 문자의 관계는?
숫자와 문자 컴퓨터는 숫자 밖에 모름: 2진수 글자는 숫자로 나타냄 예: 'a' 라는 글자는 숫자 97로 나타냄 = 16진수 61 = 2진수 0110 0001 97이 문자 'a'라면 숫자 97은 어떻게 나타내나? 내부적으로는 차이가 없음 사용 목적에 따라 사람이 다르게 사용
실습 lab15_02/code1.c #include <stdio.h> main(){ int c = 97; // Try 'a', 'b' printf("c의 십진 정수 값은 %d다.\n", c); // c를 putchar로 출력한다. } 변수 c의 값을 putchar로 출력하는 line을 추가해보라. 결과를 보고 무엇을 알아냈는가? 파일의 뒷부분에 코멘트로 작성하여 제출한다.
실습 lab15_03/code2.c #include <stdio.h> int main(){ int c = ’1’; printf(“c의 십진 정수 값은 %d다.\n”, c); // add a line here. } 변수 c의 값을 putchar로 출력하는 line을 추가해보라. 결과를 보고 무엇을 알아냈는가? 파일의 뒷부분에 코멘트로 작성하여 제출한다.
ASCII American Standard Code for Information Interchange 127 이하의 숫자 영문자 및 숫자, 기호 포함 ABCD…abcd…!@#$~%^&*() etc.
ASCII code를 알아보자 #include <stdio.h> int main(){ int c = 0; while (c<128) { printf("%d=%c ", c, c); c++; }
ASCII code A 65 B 66 C 67 ... Z 90 a 97 b 98 c 99 ... z 122 0 48 1 49 ..... 9 57 ! 33 " 34 # 35 ..... Don't have to memorize. 위에서 따옴표는 생략
잠깐... 문자 상수는 C 프로그램 안에서 지정할 때 변수나 다른 것과 구분하기 위해서 따옴표를 쓰는 것. 예) a = b; 라고 하면 b는 변수 명이 되고 a = 'b'; 라고 하면 b라는 문자를 뜻함 출력할 때는 당연히 따옴표는 나오지 않음.
변수 값이 숫자 문자인가? if ((c>='0') && (c<='9')){ ... } 둘은 같은 코드임.
변수 값이 영문자 대문자인가? if ( (c >= 65) && (c <= 90)) ... 또는 if ( (c >= 'A') && (c <= 'Z')) ...
lab15_04/code3.c EOF가 될 때까지 글자를 하나씩 읽어 들여서 이 글자와 함께 해당 ASCII 값(0~127)을 숫자로 출력하는 프로그램을 작성하라. Hint: 글자를 읽는 것은 getchar() 함수를 이용한다. 문자로 출력은 putchar를, 숫자로 출력하는 것은 printf(“%d”, …)을 이용한다.
library 함수들 (1) Test용 함수 #include <ctype.h> int isalpha(int c); int isalnum(int c); int isdigit(int c); int isgraph(int c); // printable int islower(int c); int isupper(int c); int isspace(int c);
library 함수들 (2) 변환용 함수 #include <ctype.h> int tolower(int c); int toupper(int c);
EOF가 될 때까지 글자를 읽으면서 소문자의 개수를 세어서 출력하는 프로그램을 작성하라. lab15_05 lower.c EOF가 될 때까지 글자를 읽으면서 소문자의 개수를 세어서 출력하는 프로그램을 작성하라. c = getchar(); while ( .. ){ if (islower(c)) ... .. }
lab15_06/count.c EOF가 될 때까지 글자를 읽어서 입력된 소문자의 개수, 대문자의 개수, 숫자 문자의 개수를 출력하는 프로그램을 작성하라. 단, 문자 값을 직접 비교하지 말고 라이브러리 함수를 이용하라. if (islower(c))...
제 15 강 끝. shcho.pe.kr
슬라이드 제목 입력 슬라이드 본문을 입력