실행결과를 화면에 표시하기
Goals
- printf() 사용하기
- 문자열 출력
- 이스케이프 시퀀스
printf() 사용하기
printf("controlString" , data);
printf()에서 controlString 부분은 필수이지만 ,data 부분은 선택사항입니다.
printf("내가 가장좋아하는 숫자는 %d입니다.", 27);
문자열 출력
문자열을 출력할땐 "" 큰따옴표로 감싸면됩니다. 위의 controlString 부분입니다.
printf("C를 배우고 있는 중입니다");
아래와 같이 입력을 한다면 우리의 생각과는 다르게 출력될 수 있습니다.
printf("코드를 작성한다);
printf("C를 배운다");
아래처럼 C는 printf()가 실행되면 자동으로 커서가 내려가지 않습니다. C를 배운다를 다음줄로 가게하려면 이스케이프 시퀀스를 사용해야합니다.
이스케이프 시퀀스
C에는 많은 이스케이프 시퀀스(escape sequence)가 있는데 아래표는 가장 많이 쓰는 이스케이프 시퀀스를 모은것입니다.
|
코드 |
설명 |
|
\n |
줄바꿈 |
|
\a |
경고 (컴퓨터 벨소리) |
|
\b |
백스페이스 |
|
\t |
탭 |
|
\\ |
백슬래시 |
|
\' |
작은 따옴표 |
|
\" |
큰 따옴표 |
\n을 사용하여 줄바꿈을 해보면,
printf("코드를 작성한다\n");
printf("C를 배운다\n");
아래와 같이 두줄로 출력이 됩니다.
이스케이프 시퀀스는 하나의 문자이기 때문에 ""큰 따옴표 안에 넣어야합니다.
아래와 같이 이스케이프 시퀀스를 사용해도 위와 동일하게 출력이 됩니다.
printf("코드를 작성한다\nC를 배운다\n")
만약에 출력할때 " 혹은 ' 를 표시하고 싶다면 \"나 \'를 사용해야 합니다.
아래는 Chapter 4의 예제 1 입니다.
|
1
2
3
4
5
6
7
8
9
10
11
12
|
// 4장 예제 #1
// 파일 CH_04_PR_01.c
#include <stdio.h>
main()
{
printf("컬럼 A\t컬럼 B\t컬럼 C");
printf("\n내 컴퓨터의 경고음은 다음과 같다: \a!\n");
printf("\"잘못 쓴 문짜\b자를 고치기 위하여 백스페이스를 사용하고 ");
printf("화면에 백슬래시를 보여주자.\\\"고 그녀는 말했다.\n");
return 0;
}
|
cs |
이렇게 입력하면 아래와 같이 출력되고 컴퓨터에서 삑하는 소리가 한번 납니다.
변환문자
2장에서 형식지정자(type specifier)를 배웠습니다. 다시 한번 복습해보겠습니다.
C에서는 형식지정자/변환문자로 숫자들의 형식을 지정할 수 있습니다.
|
변환 문자 |
설명 |
|
%d |
정수 (integer) |
|
%f |
부동소수점수 (float) |
|
%c |
문자 (character) |
| %s |
문자열 (string) |
문자열 안에서 값을 출력하려면 적절한 변환문자를 controlString안에 넣고 출력하고 싶은 값은 data안에 넣으면 됩니다.
printf("controlString" , data);
문자열은 그냥 출력해도 되지만 다른 데이터와 결합하여 출력할때에는 %s를 사용합니다.
printf("%s %d %f %c\n", "철수", 14, -8.76, 'X');
철수 14 -8.76 X
C는 부동소수점수에 대해서 구체적으로 출력을 합니다. -8.76은 2개의 소수점이하 자리를 가지고 있지만 %f로 출력을 하게되면 소수점이하 6자리로 출력합니다.
그래서 %와 f사이에 .을 찍은 후 숫자를 넣으면 제어할 수 있게됩니다.
printf("%f %.3f %.2f %.1f", -8.765432, -8.765432, -8.765432, -8.765432)
-8.765432 -8.765 -8.76 -8.7
예제
만약 %를 출력하고 싶다면 %c 변환문자를 사용하여 필요한곳에 사용할 수 있고 %%를 사용해도 됩니다.
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
|
// 4장 예제 #2
// 파일 CH_04_PR_02.c
#include <stdio.h>
main()
{
/* 여기서는 printf(), 이스케이프 시퀀스,
변환 문자를 학습해보자. */
printf("수량\t단가\t총액\n");
printf("%d\t$%.2f\t$%.2f\n", 3, 9.99, 29.97);
printf("너무 많은 스페이스는 \b\b\b\b와 같이 ");
printf("\\%c 이스케이프 문자로 수정이 가능하다.\n", 'b');
printf("\n\a\n\a\n\a\n\a몇줄을 건너뛰고 경고 사운드를 ");
printf("출력한다.\n\n\n");
printf("%c%s.", 'C', "를 정복하는 중이다");
printf("여러분은 %d장을 끝냈다. 여러분은 이미 이 책의 ", 4);
printf("%.1f%c를 학습하였다.\n", 12.500, '%');
printf("\n\n삼분의 일은 %.2f와 같거나 ", 0.333333);
printf("%.3f와 같거나 %.4f와 같거나 ", 0.333333, 0.333333);
printf("%.5f와 같거나 %.6f와 같다. \n\n\n", 0.333333, 0.3333333);
return 0;
}
|
cs |
마지막 예제는 아래의 출력 결과를 보고 직접 프로그램을 작성하여 잘 출력이 되는지 비교해 보면됩니다.
|
1
2
3
4
5
6
7
8
9
10
11
12
13
|
#include <stdio.h>
main()
{
//printf("빛의 속도는 %s입니다.\n", "30000.000000km/s");
printf("빛의 속도는 \"%fkm/s\"입니다.\n", 300000.0);
//printf("중력 가속도는 '%fm/s제곱'입니다.\n", 9.8);
printf("중력 가속도는 \'%fm/s제곱\'입니다.\n", 9.8);
//printf("정수는 %%c로 표시하고 실수는 %s로 표시한다.\n", 'd', "%f");
printf("정수는 %%d로 표시하고 실수는 %%f로 표시한다.\n");
//printf("컴퓨터가 삑소리를 내게 하려면 %s을 출력한다\n", "\a");
printf("컴퓨터가 삑소리를 내게 하려면 \\a를 출력한다.\n");
return 0;
}
|
cs |
요약
- printf()는 controlString이 필요하다. (data는 선택)
- 이스케이프 시퀀스로 줄바꿈, 탭, 따옴표, 백슬래시, 컴퓨터에서 삑소리가 나게하기등을 사용할 수 있다.
- 부동소수점수를 출력할땐 %와 f사이에 .과 숫자를 넣으면 소수점 이하 자릿수를 제어할 수 있다.