Programming/C

printf의 출력 방식: %.*s 형식 지정자 활용하기

moxie2ks 2025. 4. 10. 18:01
728x90
반응형

개요

C 언어의 printf 함수는 다양한 형식 지정자를 통해 출력을 제어할 수 있는 강력한 기능을 제공한다. 그 중에서도 %.*s 형식 지정자는 문자열 출력 시 특정 길이만큼만 출력하도록 제어할 수 있는 유용한 도구이다. 본 글에서는 %.*s 형식 지정자의 개념, 작동 방식, 활용 사례 등을 상세히 다루고자 한다.

설명

%.*s 형식 지정자는 printf 함수에서 가변 길이의 문자열을 출력할 때 사용되는 특수한 형태의 지정자이다. 일반적인 %s 형식 지정자는 문자열의 끝(null 종결자)까지 모든 문자를 출력하지만, %.*s는 프로그래머가 지정한, 혹은 변수를 통해 동적으로 결정된 특정 길이만큼만 문자열을 출력한다.

%.*s에서 별표(*)는 정밀도(precision)를 의미하며, 이 값은 printf 함수의 매개변수를 통해 전달된다. 이 정밀도 값이 문자열에서 출력할 최대 문자 수를 결정한다. 만약 문자열의 길이가 지정된 정밀도보다 짧다면, 문자열 전체가 출력된다.

특징

%.*s 형식 지정자의 주요 특징은 다음과 같다:

  1. 가변 길이 출력: 프로그램 실행 중 결정되는 길이만큼 문자열을 출력할 수 있다.
  2. 버퍼 오버플로우 방지: 입력된 문자열이 예상보다 길더라도 지정된 길이만큼만 출력하여 버퍼 오버플로우 같은 문제를 예방할 수 있다.
  3. 정밀한 문자열 조작: 문자열의 일부분만 정확히 출력해야 하는 상황에서 유용하다.
  4. 동적 출력 형식: 런타임에 출력 길이를 결정할 수 있어 유연한 출력 형식을 구현할 수 있다.
  5. 메모리 효율성: 필요한 만큼만 문자열을 처리하므로 메모리 사용이 효율적이다.

예제

%.*s 형식 지정자의 활용 예제를 살펴보자:

기본 예제

#include <stdio.h>

int main() {
    char str[] = "Hello, World!";
    int length = 5;
    
    printf("전체 문자열: %s\n", str);
    printf("제한된 문자열: %.*s\n", length, str);
    
    return 0;
}

출력 결과:

전체 문자열: Hello, World!
제한된 문자열: Hello

동적 길이 지정 예제

#include <stdio.h>

int main() {
    char str[] = "Programming in C is fun";
    
    for (int i = 1; i <= 10; i += 3) {
        printf("%d개 문자 출력: %.*s\n", i, i, str);
    }
    
    return 0;
}

출력 결과:

1개 문자 출력: P
4개 문자 출력: Prog
7개 문자 출력: Program
10개 문자 출력: Programmin

부분 문자열 출력 예제

#include <stdio.h>
#include <string.h>

int main() {
    char str[] = "This is a test string";
    char *ptr = strchr(str, 'a');  // 'a' 문자 위치 찾기
    
    if (ptr != NULL) {
        int position = ptr - str;  // 'a' 문자의 위치
        int remaining = strlen(str) - position;  // 남은 문자 수
        
        printf("'a' 이후 문자열: %.*s\n", remaining, ptr);
    }
    
    return 0;
}

출력 결과:

'a' 이후 문자열: a test string

결론

%.*s 형식 지정자는 C 언어에서 문자열 출력을 정밀하게 제어할 수 있는 강력한 도구이다. 동적으로 출력 길이를 지정할 수 있어 다양한 상황에서 유연하게 활용할 수 있으며, 특히 버퍼 오버플로우 방지나 특정 길이의 문자열만 표시해야 하는 상황에서 매우 유용하다. 이러한 형식 지정자를 이해하고 적절히 활용함으로써 더욱 안전하고 효율적인 C 프로그램을 작성할 수 있다.

참고 문헌

  1. C 언어 표준 라이브러리 문서: https://en.cppreference.com/w/c/io/fprintf
  2. The C Programming Language (2nd Edition) by Brian W. Kernighan and Dennis M. Ritchie
  3. C 형식 지정자 가이드: https://www.tutorialspoint.com/c_standard_library/c_function_printf.htm
  4. GNU C 라이브러리 문서: https://www.gnu.org/software/libc/manual/html_node/Formatted-Output.html
728x90
반응형