이번 포스팅때 배워볼것은 아스키코드 값과 이스케이프 시퀸스를 이용해 소스를 짜보는 것에 대해서입니다.
아스키코드란?
1962년 안시(ANSI)가 정의한 미국 표준 정보 교환 코드. 이 코드는 7비트의 이진수 조합으로 만들어져 총 128개의 부호를 표현한다. 아스키코드의 처음 32개(0-31)는 프린터나 전송 제어용으로 사용되고 나머지는 숫자와 로마글자 및 도량형 기호와 문장 기호를 나타낸다.
아스키(ASCII)는 7자리의 2진 코드인데 1비트의 패리티 비트를 추가하여 8개의 비트로 많은 컴퓨터에 사용되고 있다. 아스키(ASCII)코드의 비트 번호는 오른쪽에서 왼쪽으로 부여한다. 아스키(ASCII)는 여러 가지로 다양하게 사용되는 코드에 따른 정보 호환성의 제한이나 불편을 덜고, 컴퓨터 대 컴퓨터, 시스템의 통신을 단순화하고 표준화하기 위해 통신 장비의 사용자들과 자료 처리 사업자들이 협력하여 만들었다.
[네이버 지식백과] 아스키 코드 [American Standard Code Information Interchange code] (한글글꼴용어사전, 2000. 12. 25.)
쉽게 말해 우리가 문자들을 쓸수있도록 A는 65이다! 라고 컴퓨터에게 지정해준거라고 생각하면 됩니다. 물론 아직은 외우실 필요는 없고 아~이런게 있구나 정도로만 알고 넘어가시면 됩니다.
#2의 응용문제를 풀어보셨다면 해당문자의 출력된 숫자가 여기써진것과 같다는걸 아실수 있을거입니다. 문자열을 통해 아스키코드값을 출력하는방법과 아스키코드값을 통해 문자열을 출력을 예제를 통해 알아보겠습니다.
예제#1
10진수 아스키 코드값 출력해보기
1 2 3 4 5 6 7 8 9 | int main() { char a = 'A',b='#'; printf("A의 10진수 아스키코드값 : %d\n", a); printf("#의 10진수 아스키코드값 : %d\n", b); return 0; } |
저번에 문제 푸신분들은 아실겁니다! char형으로 선언하고 문자를 저장한걸 %d, %o, %x 로 출력 해주세요~ 라고하면 각각 10진수, 8진수, 16진수로 출력을 해준답니다.
예제#2
10진수로 아스키코드값으로 문자 출력하기
1 2 3 4 5 6 7 8 9 10 11 | #include <stdio.h> int main() { int a = 65, b = 35; printf("아스키코드값 65 -> %c\n", a); printf("아스키코드값 35 -> %c\n", b); return 0; } |
int로 선언하여 숫자를 저장한걸 %c를 통해 출력해달라고 했더니 문자가 나왔습니다!
근데 이걸 어디다 쓰냐고요? 나중에 A~Z 아스키코드값이 65~90, a~z 아스키코드값이 97~122 라는걸 이용하면 알파벳을 유용하게 쓸수있는등 여러모로 쓸모가 많습니다. 앞에서도 말했지만 쓸만한거만 외우시고 나머진 필요할때만 켜서보고 쓰시면됩니다.
+알아두기
혹시 #2파트를 공부하면서 char형 변수에 한글을 저장해보신적 있나요? char a='가'; 라고 저장해서 출력해보면 제대로 출력이 되지 않습니다. 왜그럴까요?
char형은 1바이트를 저장한다고 되있었습니다. 그런데 한글은 2바이트라서 char에 저장하기엔 저장공간이 부족해지기 때문에 저장을 할 수 없게 되버리는겁니다. 참고로 아스키코드값은 1바이트(=8비트)이기 때문에 저장이 되는 겁니다.
이스케이프 시퀸스
이스케이프 시퀸스는 pritnf안에 넣어서 여러 기능을 하는것들입니다. 사전에 \n을 배워서 썼었죠? 그 이외에도 무엇이 있는지 알아보겠습니다.
예제
1 2 3 4 5 6 7 8 9 10 11 12 | #include <stdio.h>
int main() { printf("경고음 : \a\n"); printf("수평 탭 : 탭\t탭\n"); printf("큰,작은 따옴표 출력 : \'\"\n"); printf("역슬래쉬 출력 : \\\n");
return 0; } |
일부만 써봤는데 딴거도 한번 써보세요~ 자기가 필요하다 싶은거만 외우시면됩니다. vs 2017로 해봤는데 몇개 안되는거도 있는거 같네요.
응용 문제
변수를 선언하지 않고 printf문으로 경고음을 내며 ???? 을 출력해보세요. 단 1~3번째 ?은 아스키코드값 10,8,16진수로 출력, 4번째 ?은 이스케이프 시퀸스를 이용해서 출력해보세요.(8진수 값은 예제1처럼 하셔서 출력해보시거나 계산하셔서 구해보세요!)
'C언어' 카테고리의 다른 글
[C언어]#5 입력받기 scanf, scanf_s 문 (2) | 2017.04.01 |
---|---|
[C언어]#4연산자들과 우선순위 (1) | 2017.04.01 |
[C언어] #2 기본 자료형과 변수 선언하는 방법 (0) | 2017.03.29 |
[C언어] #1 기본 골격설명 &출력기능 puts, printf (1) | 2017.03.29 |
[C언어] #0 C언어란? (0) | 2017.03.29 |