본문 바로가기
프로그래밍/C

[C언어] 제어 문자란?

by 알용 2012. 6. 6.
반응형

머리말

C언어에서는 제어 문자라는 것을 제공한다.
주로 출력 방식을 다양하게 하기 위해 제어 문자를 쓰곤 하는데 자주 쓰이는 것들만 소개하겠다.



우선 표부터 봐주길 바란다.
제어 문자를 보고 그 제어 문자가 어떠한 역할을 하는지 대강 파악해보길 바란다.
자세한 설명은 아래에 있다.

 제어 문자

역할 

\n 

개행(한 줄 띄움)하여 커서를 위치시킨다.

\t

현재 커서 위치에서 다음 탭 위치로 커서를 옮긴다. 

\0

NULL값을 의미한다. 

\a 

 비프(Beep)음을 출력한다.

 \\

역슬래시(\)를 출력한다. 

 \"

 큰따옴표(")를 출력한다.

\b 

커서의 위치를 현재의 위치에서 한 칸 뒤로 옮긴다. 

\r

 커서의 위치를 현재 줄의 맨 앞으로 옮긴다.

 

1. \n

이번 장 전에서도 많이 써보았던 제어 문자이다.
출력을 하다가 \n 을 만나게 되면 한 줄을 띄게 된다.
다들 익숙하므로 부가적인 설명은 하지 않겠다.


2. \t

코드창에서 코딩을 하다가 Tab 키를 누르면 일정 간격만큼 벌어지면서 커서가 이동하는 것을 확인할 수 있다.
출력창에서도 이와 마찬가지로 일정 간격을 잡아놓고, 출력을 하던 도중 \t 를 만나면 다음 Tab 의 위치로 커서를 이동시킨다.
사용 방법은 \n 과 동일하다.


3. \0

아직 NULL값이라는 것이 어떤 것인지 모를 것이다.
NULL값을 알기 위해서는 우선, ASCII(아스키) 코드에 대해서 알아두어야 하는데 이는 나중에 다시 설명할 것이다.


4. \a

컴퓨터 본체에서 비프음이 울리도록 하는 제어 문자다.
추가적인 설명 없이
printf("\a"); 해보면 알 수가 있다.
printf("\a\a\a"); 이렇게 세번 쓰면 세번 울리게 된다.
본체에 따라서 비프음이 울리지 않을 수도 있으니 참고하길 바란다.
(※ \a를 적은만큼 비프음이 출력되게 되니, 이 점을 이용해서 친구에게 장난을 쳐 볼 수도 있겠다.)


5. \\,  \"

이 두 가지는 묶어서 설명하도록 하겠다.
프로그램을 만들다 보면 화면에 \, 또는 " 를 출력해야 할 상황이 올 수도 있는데,
제어 문자에 대한 이해가 부족한 사람이라면 아래와 같이 코딩을 할 것이다.
printf("\");
printf(""");
컴파일을 해보면 오류가 나게 된다.

우선 printf("\"); 부터 보도록 하자.
제어 문자는 기본적으로 \와 문자 하나를 결합하여 사용하는 것을 원칙으로 하는데,
\다음에 " 가 왔으니 컴퓨터는 \" 화면에 " 를 출력하라는 의미로 알아듣게 된다.
여기까지는 좋았는데, \ 뒤에 있는 " 가, printf 함수의 출력 블록의 끝이 아닌 제어 문자로써 사용되었기 때문에
앞에서 연 " 출력 블록의 끝을 찾지 못하게 된다.
이 때문에 오류가 발생하게 되는 것이다.


다음으로 printf("""); 를 보자.
우리는 printf 함수를 적고 괄호를 여닫은 다음 그 안에 큰 따옴표 두개를 적어 따옴표 사이에 있는 문자를 출력해본 경험이 있다.
따라서, 위와 같이 코딩을 하게되면 " " 안에 있는 " 가 출력될것으로 예상되지만 그렇지 않다.
첫번째 " 를 만났을 때, 컴파일러는 다음 " 를 만날 때까지 그 사이에 있는 문자들을 출력하겠다 라고 인식하게 되는데
두번째 " 를 만났으니 출력의 끝으로 인식하게 된다.
여기까지는 문제 없지만 그 다음 세번째 " 에서 또 다시 출력을 요구하고 있다.
출력을 요구했으면 출력을 중지하는 " 가 나와야 하는데 그렇지 않아 오류가 발생하는 것이다.
출력 요구의 "와 중지의 "가 중복되어 나오는 것이 이해가 되지 않는다면, printf("abcd""efg"); 이렇게 적어보길 바란다. abcdefg 가 출력될 것이다.



반응형