실행결과를 화면에 표시하기
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사이에 .과 숫자를 넣으면 소수점 이하 자릿수를 제어할 수 있다.