본문 바로가기
프로그래밍/C++

C++ 서식지정자(Format Specifier)

by 머니테크리더 2023. 9. 27.
반응형

C++ 서식지정자(Format Specifier)
C++ 서식지정자(Format Specifier)

🔖 INDEX

     

     

    주요 서식 지정자들에 대한 설명

    1. %d 또는 %i: 정수(int) 값을 출력하거나 입력받을 때 사용합니다.

    int num = 123;
    printf("%d\n", num);
    scanf("%d", &num);

     

    2. %u: 부호 없는 정수(unsigned int) 값을 출력하거나 입력받을 때 사용합니다.

     

    3. %f: 부동 소수점(float) 값을 출력합니다.

    float num = 123.456;
    printf("%f\n", num);

     

    4. %lf: double 타입의 부동 소수점 값을 출력하거나 입력받을 때 사용합니다.

    double num = 123.456;
    printf("%lf\n", num);
    scanf("%lf", &num);

     

    5. %c: 단일 문자(char)를 출력하거나 입력받을 때 사용합니다.

    char ch = 'A';
    printf("%c\n", ch);
    scanf("%c", &ch);

     

    6. %s: 문자열(char 배열 또는 문자 포인터)을 출력하거나 입력받을 때 사용합니다.

    char str[] = "Hello, World!";
    printf("%s\n", str);
    scanf("%s", str);

     

    7. %p: 포인터 주소를 출력할 때 사용합니다.

     

    8. %o: 8진수(octal)로 정수를 출력합니다.

     

    9. %x 또는 %X: 16진수(hexadecimal)로 정수를 출력합니다. %x는 소문자로, %X는 대문자로 출력합니다.

     

    10. %lld: long long int 타입의 정수 값을 출력하거나 입력받을 때 사용합니다.

     

    11. %llu: unsigned long long int 값을 출력하거나 입력받을 때 사용합니다.

     

    12. %%: % 문자 자체를 출력할 때 사용합니다.

     

     

    다양한 서식 지정자 플래그와 설정

    너비

    • 너비는 출력할 항목의 최소 문자 수를 지정합니다.
    • 지정한 너비보다 출력할 항목이 작을 경우, 나머지는 공백으로 채워집니다.
    • 오른쪽 정렬로 기본적으로 출력되지만, - 플래그를 사용하면 왼쪽 정렬로 출력됩니다.

    예제:

    int num = 75;
    printf("%5d\n", num);  // "   75"
    printf("%-5d\n", num); // "75   "

     

    0 플래그를 사용하면, 빈칸을 공백이 아닌 0으로 채울 수 있습니다.

    printf("%05d\n", num);  // "00075"

     

    정밀도

    정밀도는 . 뒤에 숫자로 지정됩니다. 정밀도가 사용되는 경우는 대체로 다음과 같습니다:

     

    1. 정수: 정밀도는 출력할 최소 자릿수를 지정합니다. 지정된 자릿수보다 작을 경우, 앞쪽은 0으로 채워집니다.

    printf("%.5d\n", num);  // "00075"

     

    2. 부동 소수점: 정밀도는 소수점 이하의 자릿수를 지정합니다. 

    double val = 3.141592;
    printf("%.2f\n", val);  // "3.14"

     

    3. 문자열: 정밀도는 출력될 최대 문자 수를 지정합니다.

    char str[] = "Hello, World!";
    printf("%.5s\n", str);  // "Hello"

     

    4. 너비와 정밀도를 함께 사용할 수도 있습니다.

    printf("%10.2f\n", val); // "      3.14"

     

    5. 추가적으로, 너비나 정밀도를 *로 지정하면, 해당 값을 인수로 전달받아 동적으로 지정할 수 있습니다.

    printf("%*.*f\n", 10, 2, val); // "      3.14"

    이처럼 서식 지정자의 너비와 정밀도를 활용하면 출력되는 데이터의 형태를 세밀하게 제어할 수 있습니다.

     

     

    길이지정자

    길이 지정자는 해당 변수의 크기나 타입에 따라 출력 또는 입력 형식을 조절합니다.

     

    1. h : short int 또는 unsigned short int를 지정합니다.

    short int num = 12345;
    printf("%hd", num);

     

    2. hh : signed char 또는 unsigned char를 지정합니다.

     

    3. l : long int 또는 unsigned long int, 또는 wchar_t 문자 또는 문자열을 지정합니다.

    long int lnum = 123456789L;
    printf("%ld", lnum);

     

    4. ll : long long int 또는 unsigned long long int를 지정합니다.

     

    5. j : intmax_t 또는 uintmax_t를 지정합니다.

     

    6. z : size_t를 지정합니다.

     

    7. t : ptrdiff_t를 지정합니다.

     

    8. L : long double를 지정합니다.

     

    플래그

    1. - : 왼쪽 정렬. 지정한 너비 내에서 값을 왼쪽으로 정렬합니다.

    printf("%-10d", 123);  // "123       "

     

    2. + : 부호 표시. 양수일 때도 부호를 출력합니다.

    printf("%+d", 123);  // "+123"

     

    3. (공백): 양수일 때 공백, 음수일 때 - 부호를 출력합니다. (즉, 양수 앞에 공백 한 칸이 추가됩니다.)

    printf("% d", 123);  // " 123"

     

    4. # : 대체 형식.

    • 8진수 앞에 0을 추가하거나,
    • 16진수 앞에 0x 또는 0X를 추가하거나,
    • 실수에서 소수점이 없어도 소수점을 출력합니다.
    printf("%#o", 123);   // "0173"
    printf("%#x", 123);   // "0x7b"
    printf("%#f", 123.0); // "123.000000"

     

    5. 0 : 패딩. 지정한 너비 내에서 빈 공간을 0으로 채웁니다.

    printf("%010d", 123);  // "0000000123"

     

    이러한 플래그와 길이 지정자를 조합하여 서식 지정자를 세밀하게 제어할 수 있습니다.

     

     

    댓글