9.3 제어 문자 사용하기

문자 자료형에는 숫자나 알파벳뿐만 아니라 제어 문자도 저장할 수 있습니다. 다음 내용을 소스 코드 편집 창에 입력한 뒤 실행해보세요.

char_linefeed.c

#include <stdio.h>

int main()
{
    char c1 = 'a';           // 문자 a 할당
    char c2 = 'b';           // 문자 b 할당 
    char lineFeed = '\n';    // 제어 문자 \n 할당

    printf("%c%c%c%c", c1, lineFeed, c2, lineFeed);    // 제어 문자도 %c로 출력할 수 있음

    return 0;
}

실행 결과

a
b

변수 lineFeed에 제어 문자 '\n'를 넣은 뒤 printf에서 %c로 출력해보면 ab사이에 줄바꿈이 되는 것을 볼 수 있습니다. 즉, 작은따옴표로 제어 문자를 넣고 printf에서 %c로 출력하면 해당 제어 문자가 동작합니다.

다음은 자주 접하는 제어 문자의 ASCII 코드입니다.

표 9‑3 LF, CR, TAB 제어문자의 ASCII 코드
10진수 16진수 문자 표기법 설명
10 0x0A LF \n 개행, 라인 피드(Line Feed), 새 줄(new line), 줄바꿈
13 0x0D CR \r 복귀, 캐리지 리턴(Carriage Return), 줄의 끝에서 시작 위치로 되돌아감
9 0x09 TAB \t 수평 탭(horizontal tab)

수평 탭은 키보드에서 Q 왼쪽에 있는 탭키와 같습니다. 따라서 printf에서 '\t'를 사용하면 일정 크기만큼 공간을 띄웁니다.

읽을거리 | CR, LF의 유래

CR, LF는 타자기에서 나온 용어입니다. 타자기에서 줄바꿈을 하려면 종이를 오른쪽으로 쭉 밀고, 다시 종이를 한 줄 만큼 위로 올립니다. 이렇게 종이를 오른쪽으로 밀어서 처음으로 오게 하는 행동을 복귀(Carriage Return)라고 하고, 종이를 위로 올리는 행동을 개행(Line Feed)이라고 합니다.

이제 타자기는 사라지고 컴퓨터와 키보드로 대체되었지만 타자기의 흔적이 완전히 사라지지 않고 남은 것이 CR(\r)과 LF(\n)입니다. 컴퓨터에서 CR, LF는 둘 다 새 줄, 줄바꿈으로 사용되고 있으며 운영체제 별로 조금씩 차이가 있습니다.

다음은 텍스트 파일을 저장할 때 줄바꿈 규칙입니다.

  • Windows: CR LF
  • 유닉스, 리눅스, macOS: LF
  • Mac OS 9(클래식): CR

보통 C 언어에서는 printf로 값을 출력할 때 운영체제와 관계 없이 \n만 사용해도 됩니다.

이번에는 제어 문자의 ASCII 코드를 출력해보겠습니다.

char_linefeed_ascii.c

#include <stdio.h>

int main()
{
    char lineFeed = '\n';    // 제어 문자 \n 할당

    printf("%d 0x%x\n", lineFeed, lineFeed);    // 10 0xa: 제어 문자의 ASCII 코드 출력

    return 0;
}

실행 결과

10 0xa

제어 문자라 하더라도 printf에서 %d, %x로 출력하면 변수에 들어있는 정수가 바로 출력됩니다. 즉, \n은 ASCII 코드대로 10진수 10, 16진수 0xa가 나옵니다.

지금까지 문자 자료형과 ASCII 코드에 대해 배웠는데 숫자로 된 ASCII 코드는 다소 어려울 수 있습니다. C 언어 문자는 ASCII 코드로 저장한다 정도만 기억하면 되고, 나머지는 이런 것도 있다 정도만 알아두면 됩니다.