Programming/C Lang Lecture

[C언어 강좌]9강 : 서식문자와 이스케이프 시퀀스

yutaejeong 2014. 7. 26. 15:20


Written By Imperfect


[C언어 강좌]9강 : 서식문자와 이스케이프 시퀀스


목차

1. 서식문자

2. 이스케이프 시퀀스


1. 서식문자

서식문자란, 변수를 출력하거나 %기호 자체를 출력하고자할때 사용합니다.

이전에 사용하였던 %d나 %f도 서식문자입니다.

서식문자의 종류에는 아래와 같은 종류가 있습니다.


서식문자

타입

인수

출력형식

%c

char 

문자 

printf 함수와 함께 사용할 경우, 단일 바이트 문자를 지정합니다. wprintf 함수는 와이드 문자를 지정합니다.

%C

printf 함수와 함께 사용할 경우, 와이드 문자를 지정합니다. wprintf 함수는 단일 바이트 문자를 지정합니다.

%d

 int

정수

부호 있는 10진수 정수

%i

%u

unsigned int

부호 없는 10진수 정수

%f

double

float

부동소수점

dddd에서 양식 [ – ]dddd.dddd를 가지는 부호 있는 값은 한 자리 또는 그 이상의 10진수입니다. 소수점 앞의 자리수는 숫자의 크기에 따라 달라지고, 소수점 뒤의 자리수는 요청된 정밀도에 따라 달라집니다.

%%



%기호 자체 를 출력


위의 종류 말고도 더 다양한 서식문자가 있지만 나중에 더 설명하도록하겠습니다.

이제 서식문자의 사용예를 봐봅시다.


1
2
3
4
5
6
7
8
9
10
#include<stdio.h>
int main()
{
    int i = 123456;
    double dou = 123.456;
    float flo = 654.321;
    char ch = 'A';
    printf("i = %d, dou = %0f, flo = %f, ch = %c", i, dou, flo, ch);
    return 0;
}

위의 결과는 아래와 같습니다.



이건 이전에 다 해보아서 알겁니다.

그러니 따로 외우거나 하실필요가 없습니다.

어차피 하다보면 외워 질겁니다.


2.이스케이프 시퀀스

이스케이프 시퀀스란, printf문의 기능이라고 보면 됩니다.

일단 종류부터 봐봅시다.아래는 이스케이프 시퀀스의 종류를 정리한 표 입니다.


이스케이프 시퀀스

내용

\a

경고음(비프음)

\b

백스페이스

\f

폼 피드

\n

줄 바꿈

\r

캐리지 리턴

\t

가로 탭

\v

세로 탭

\'

작은 따옴표

\"

큰 따옴표

\\

백 슬래시

\?

리터럴 물음표


위의 이스케이프 시퀀스 말고도 몇개가 더 있지만 현 수준으로 쓸일이 없으므로

설명하지 않겠습니다.

이제 이스케이프 시퀀스를 이용한 예시를 봐봅시다.

1
2
3
4
5
6
7
8
9
10
11
12
#include<stdio.h>
int main()
{
    printf("바둑이가 멍멍 짖었습니다.");
    printf("오목이가 \"멍멍\" 짖었습니다.");
    printf("\n바둑이가 멍멍 짖었습니다.");
    printf("오목이가 멍멍야\b옹\b 짖었습니다.");
    printf("\n");
    printf("바둑이가 멍\a멍 짖었습니다.");
    printf("오목이가\t멍멍 짖었습니다.");
    return 0;
}

4번째 줄에선 처음 출력 했던 대로 출력할 텍스트만 입력했습니다.

5번째 줄에서는 "멍멍" 이라는 글자 앞뒤로 큰따옴표를 붙였습니다.

6번째 줄에서는 개행(줄바꾸기)를 했습니다.

7번째 줄에서는 "야옹" 의 각 글자뒤에 \b를 입력해서 출력이 안되도록 했습니다.

8번째 줄에서는 개행만 했습니다.

9번째 줄에서는 경고음(비프음)이 나게 했습니다.

10번째 줄에서는 탭(들여쓰기)을 사용하였습니다.

이제 결과를 봐봅시다.




일단 프로그램을 실행하면 경고음(비프음)이 들립니다.

그리고 나머지결과는 위의 예제 설명과 같이 되었습니다.

만약 이스케이프 시퀀스를 사용하지 않고 컴파일을 하면 어떻게 될까요? 한번 다음 예제를 봅시다.


1
2
3
4
5
6
7
8
9
10
11
12
#include<stdio.h>
int main()
{
    printf("바둑이가 멍멍 짖었습니다.");
    printf("오목이가 "멍멍" 짖었습니다.");
    printf("바둑이가 멍멍 짖었습니다.");
    printf("오목이가 멍멍야옹 짖었습니다.");
    printf("");
    printf("바둑이가 멍멍 짖었습니다.");
    printf("오목이가 멍멍 짖었습니다.");
    return 0;
}


한번 컴파일을 해봅시다.




이런 에러가 생기실겁니다.

당연한 결과 입니다. printf문에서 큰따옴표로 묶여있는부분 말고 다른 텍스트가 감지되어 컴파일러는 그것을 출력을 못하기 떄문입니다.

에러가 나지 않도록 5번째줄을 지우고 실행하더라도 비프음도 안나고 야옹 이란 글자가 그대로 출력되며, 개행도 되지않아 보기에 매우 않좋을것입니다. 이렇기 떄문에 이스케이프 시퀀스를 쓰는겁니다.

오늘강좌는 여기 까지 하겠습니다.


다음강좌

10강 : [번외] getch()로 입력받기