본문 바로가기
C, C++/문법 정리

[C언어]이스케이프 시퀀스에 대해 알아보자

by hseoy 2020. 4. 24.
반응형

이번 글에서는 지난 글에서 잠깐 언급되었던 이스케이프 시퀀스에 대해서 좀 더 자세히 알아보려고 한다.

이스케이프 시퀀스란 '\' 문자와 다른 문자를 결합하여 일반적인 방법으로는 표현하기 어려운 기능이나 문자를 표현할 수 있게 해주는 문자를 말한다.

지난 글의 경우, '\n'을 'Hello World!'를 출력하는 데 함께 사용하여 줄바꿈을 하는 용도로 사용했는데 이것이 바로 이스케이프 시퀀스였다.

이스케이프 시퀀스에는 줄바꿈을 해주는 '\n' 문자 외에도 다양한 것들이 있다. 일반적으론 표현할 수 없는 것들을 표현할 수 있도록 고안되었는데 생각보다 많으니 대충 살펴보고 필요할 때마다 참고하기를 바란다.

문자 의미 설명
\a 경보(alert) 경보를 울린다.(하드웨어에 따라 다르다)
\b 백스페이스(backspace) 백스페이스
\f 폼피드(form) 커서를 다음 페이지의 시작부분으로 넘김
\n 개행, 줄바꿈(new line) 커서를 다음 줄 첫 번째 위치로 넘김
\r 복귀, 캐리지 리턴(carriage return) 커서를 다음줄로 넘기지 않고 첫 번째 위치로 넘김
\t 수평 탭(horizontal tab) 키보드의 tab 키와 같은 기능
\v 수직 탭(vertical tab) 수직으로 탭
\\ 백슬래시(backslash) 백슬래시를 표기한다.
\' 작은 따옴표(single quotation marks) C/C++에서 문자(character)를 'a'와 같이 표기하는 데 이 기능과의 충돌을 방지하기 위해 이스케이프 문자로 표기함
\" 큰 따옴표(double quotation marks) C/C++에서 문자열(string)을 "abc"와 같이 표기하는 데 이 기능과의 충돌을 방지하기 위해 이스케이프 문자로 표기함
\? 물음표(quesion mark) 물음표는 C/C++에서 삼항연산자와 같이 사용되는 데 이와의 충돌을 방지하기 위해 이스케이프 문자로 표기함
\o(8진수 숫자) 8진수(octal number)

10진수와 구분하기 위해 8진수를 이스케이프 문자를 이용하여 표기한다.

예시) \o73

\x(16진수 숫자) 16진수(hexadecimal number)

10진수와 구분하기 위해 16진수를 이스케이프 문자를 이용하여 표기한다.

(예시) \xFFFF

여기서 혹시 '\'을 키보드에서 찾고 계신 사람을 위해 알려드리자면 '\' 키는 오른쪽 엔터 키 위의 원화 키와 동일하다.

위 표를 보면 종종 설명을 봐도 이해가 안되는 부분이 있을 수 있다. 예를 들어 \f와 \v는 전혀 이해가 되지 않는다. 콘솔창에 '다음 페이지'라는 개념이 있나?라는 생각을 하게 되고, 수직 탭이 뭔지 검색하게 된다. 

\f와 \v는 이스케이프 시퀀스 중 일부 디바이스별로 동작하는 문자 중 하나이며, \f는 용지를 공급하는 이스케이프 문자로 \v와 같이 화면 출력에는 영향을 주지 않고 해당 프린터에서 작업을 수행한다. - 참고

이외에도 이해가 안되는 문자들이 있을 수 있는데 이 경우에는 직접 실행해 보는 것이 가장 좋다. 간단한 코드를 남길테니 이전 글에서 'Hello World'를 출력하는 프로젝트를 생성하고 실행한 것과 같이 직접 Ctrl + N과 F11을 통해 실행해보기를 바란다.

#include <stdio.h>

int main()
{
    printf("Hello World!\r");
    printf("Your Name\tis\tgood\n");
    return 0;
}

뭐든지 직접 해보는 것. 그것은 프로그래밍에 있어 매우 중요함을 기억하자.

반응형

댓글