Coding & Programming/C, C++

[C언어/C++] printf, scanf 함수 변수 입출력 예제(정수, 실수, 줄바꿈 등 포맷 지정자:format specifiers)

mainCodes 2021. 4. 21. 10:15
[C언어/C++] printf, scanf 함수 변수 입출력 예제(정수, 실수, 줄바꿈 등 포맷 지정자:format specifiers)

 

안녕하세요 JollyTree입니다 (•̀ᴗ•́)و

 

printf, scanf 함수는 C/C++ 언어에서 표준 입력과 출력을 지원하는 함수로 콘솔 형태의 프로그램에서 가장 많이 사용되는 함수입니다. 표준 입출력 헤더인 stdio.h에 정의된 가장 기본적인 함수이며 자료형에 따라 %d, %f, %u 등 포맷 지정자(format specifier)를 사용해 주어야 합니다.

포맷 지정자는 종류가 많아 자주 사용하는 지정자는 익숙하지만 그렇지 않은 것은 매번 자료를 찾아봐야 하는 번거로움이 있습니다. 알아두면 편리한 포맷 지정자를 예제와 함께 핵심 내용 위주로 정리하였습니다.

 printf 데이터 타입과 포맷 지정자

 

자료형
(Data Type)
포맷 지정자
(Format specifier)
예제
(Examples)
int %d, %i  printf("%d", 123);
char  %c printf("%c %c", 'A', 97);
float  %f printf("%f", 3.141592);
double   %lf printf("%lf", 3.141592);
short int  %hd printf("%hd", -25);
unsigned int  %u printf("%u", 123);
long int %li  printf("%li", -456789);
long long int %lli printf("%lli", 2359);
unsigned long int %lu printf("%lu", 2359);
unsigned long long int %llu printf("%llu", 67890);
unsigned octal(8진수)  %o  printf("%o", 300);
unsigned integer 16진수(소문자) %x printf("%x", 300);
unsigned integer 16진수(대문자) %X printf("%X", 300);
string(문자열) %s  printf("%s", "Hello World");
pointer address(포인터 주소) %p  printf("%p", p);

 

이 외 자주 사용되는 특수문자(Escape Sequence)인 \%, \', \", \?, \t, \n 들과 scanf 함수는 예제에 포함되어 있습니다. printf를 이용하여 변수 여러개를 동시에 출력하거나 scanf 함수를 이용하여 여러 개의 정수를 입력받는 방법 또한 아래 예제를 참고하세요.

 

 

printf, scanf 함수 예제:

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
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
 
int main()
{
    int a = 300;
    char c = 'A';
    float f = 3.14;
    double d = 123456;
    short int si = -123;
    unsigned int ui = 321;
    long int li = 12345678;
    long long int lli = 123;
 
    unsigned long int uli = 456;
    unsigned long long int ulli = 789;
    char s1[50= "Hello, World1";
    char s2[50= "Hello, World2";
    char *= s1;
 
    int a1, a2, a3;
 
    /* 1. printf 사용 예제
    */
    printf("int : %d\n", a);
    printf("char : %c\n", c);
    printf("float : %f\n", f);
    printf("double : %lf\n", f);
    printf("short int : %hd\n", si);
    printf("unsigned int : %u\n", ui);
    printf("long int : %li\n", li);
    printf("long long int : %lli\n", lli);
    printf("unsigned long int : %lu\n", uli);
    printf("unsigned long long int : %llu\n", ulli);
    printf("string : %s\n", s1);
 
    //특수기호 출력
    printf("%% 문자 출력 : %%문자를 출력합니다.\n");
    printf("\'(작은 따옴표) 문자 출력 : \'문자를 출력합니다.\n");
    printf("\"(큰 따옴표) 문자 출력 : \"문자를 출력합니다.\n");
    printf("\"(백 슬래시) 문자 출력 : \\문자를 출력합니다.\n");
    printf("\t(탭) 문자 출력 : \t문자를 출력합니다.\n");
 
    //변수 여러개를 동시 출력
    printf("c = %c, f = %f, si = %hd\n", c, f, si);
    printf("s1 + s2 = %s%s\n", s1, s2);
 
    //8진수, 16진수 포인터 주소 출력
    printf("300의 8진수 = %o, 300의 16진수 = %x, %X(대문자)\n", a, a, a);
    printf("s1의 주소 = %p\n", s1);
    printf("p의 주소 = %p\n", p);
 
 
    /* 2. scanf 사용 예제
    */
    printf("\n\n정수(signed:부호있음)를 입력하세요: ");
    scanf("%d"&a);
    printf("정수(unsigned:부호없음)를 입력하세요: ");
    scanf("%u"&ui);
 
    printf("문자를 입력하세요: ");
    scanf(" %c"&c);
    printf("실수를 입력하세요: ");
    scanf("%f"&f);
 
    printf("문자열을 입력하세요: ");
    scanf("%s", s1);
 
    //입력한 값들을 한번에 출력
    printf("입력한 값들입니다. : ");
    printf("a = %d\nui=%u\nc=%c\nf=%f\ns1=%s\n", a, ui, c, f, s1);
 
    //정수 3개 입력 후 출력
    printf("\n정수 3개를 공백을 이용하여 한 줄에 입력하세요:(100 200 300)");
    scanf("%d %d %d"&a1, &a2, &a3);
    printf("a1 = %d, a2 = %d, a3 = %d\n", a1, a2, a3);
 
    return 0;
}
cs

 

실행결과(Output):


상 JollyTree였습니다. (•̀ᴗ•́)و