printf할 때 "\"를 안 쓰고 특수문자 %를 출력하려면 어떻게 해야 되죠?

발생하는 문제 및 실행환경

printf("hello\%"); //이렇게 말고

백슬래시를 쓰면 특수문자가 너무 많아질 때 보기가 너무 어려워서 다른 방법을 알고 싶습니다. 저 코드랑 똑같은 결과가 나오는데 \%같이 안 쓰고 %를 출력하는 방법 없을까요?

1답변

  • 좋아요

    0

    싫어요
    채택취소하기

    형식 지정자를 쓰는 게 싫다면 %%같이 특수문자를 2번 쓰는 걸로 해결할 수 있습니다

    printf("printf(\"hello%%%%\"): hello%%\n");
    //또는
    printf("printf(\"hello%%c\"): hello%c\n", '%');
    

    출력 :

    printf("hello%%"): hello%
    printf("hello%c"): hello%
    

    다만 쓸 때 주의하셔야 하는데 printf에서 바로 쓰는 게 아니라 어떻게 출력하느냐에 따라서 다른 결과가 나올 수도 있습니다.

    int main(int argc, const char * argv[]) {
        char a[5];
        strcpy(a, "%%");
    
        printf("printf(a): ");
        printf(a);
    
        printf("\nprintf(\"%%s\", a): %s\n", a);
    }
    

    출력 :

    printf(a): %
    printf("%s", a): %%
    

    int main(int argc, const char * argv[]) {
        char a[5];
        strcpy(a, "%");
    
        printf("printf(a): ");
        printf(a);
    
        printf("\nprintf(\"%%s\", a): %s\n", a);
    }
    

    출력 :

    printf(a): 
    printf("%s", a): %
    

ᕕ( ᐛ )ᕗ
로그인이 필요합니다

작성한 답변에 다른 개발자들이 댓글을 작성하거나 댓글에 좋아요/싫어요를 할 수 있기 때문에 계정을 필요로 합니다.