Computer >> 컴퓨터 >  >> 프로그래밍 >> C 프로그래밍

C언어 printf()에서 % 기호를 출력하는 방법

C 언어에서 printf() 함수는 일반적으로 텍스트와 변수 값을 함께 출력할 때 사용됩니다. 그런데 출력하려는 문장에 % 기호 자체를 포함시키려면 특별한 주의가 필요합니다. 형식 문자열 안에서 %는 %d, %s 같은 서식 지정자의 시작을 알리는 특수 문자로 해석되기 때문입니다.

따라서 %를 문자열이나 텍스트 그대로 출력하려면 '%%'처럼 두 번 연속해서 작성해야 합니다. % 하나만 단독으로 사용하면 아무것도 출력되지 않으며, 컴파일러에 따라 오류나 경고조차 나타나지 않는 미정의 동작(undefined behavior)이 발생할 수 있습니다.

기본 예제

다음은 C 언어의 printf()에서 %를 출력하는 가장 기본적인 예제입니다.

#include<stdio.h>
int main() {
    printf("%");  // 아무것도 출력되지 않음
    printf("%%");  // % 출력
    getchar();
    return 0;
}

실행 결과

%

위 예제에서 첫 번째 printf("%")는 아무것도 출력하지 않고, 두 번째 printf("%%")만 %를 정상적으로 화면에 출력합니다.

%를 출력하는 다양한 방법

% 기호를 출력하는 방법은 '%%' 외에도 여러 가지가 있습니다. 다음 예제를 통해 각각의 방법을 확인해 보겠습니다.

#include<stdio.h>
#include<string.h>
int main() {
    // 방법 1: %% 이스케이프 시퀀스 사용
    printf("%%\n");

    // 방법 2: %c 서식 지정자에 문자 인수 전달
    printf("%c\n", '%');

    // 방법 3: %s 서식 지정자에 문자열 인수 전달
    printf("%s\n", "%");

    // 방법 4: 문자 배열에 저장한 후 출력
    char a[5];
    strcpy(a, "%%");
    printf("a의 값: %s\n", a);

    return 0;
}

실행 결과

%
%
%
a의 값: %%

정리

  • %% : 형식 문자열 내에서 리터럴 %를 출력하는 가장 표준적이고 권장되는 방법입니다.
  • %c : 문자 상수 '%'를 인수로 전달하여 출력할 수 있습니다.
  • %s : 문자열 "%"를 인수로 전달하여 출력할 수 있습니다.
  • 단일 % : 형식 문자열에 % 하나만 쓰면 미정의 동작이 발생할 수 있으므로 반드시 피해야 합니다.