printf & sprintf 팁

은빛연어의 이미지

printf~~~ sprintf~~~
이렇케 사용할수도 있습니다.. ^^*

main()
{
    char temp[16] = {0};

    sprintf(temp, "TEST : %.*s", 5, "1234567890");
    printf("%.*s\n%s\n", strlen(temp), "12345678901234567890", temp);
}
Forums: 
aeronova의 이미지

예전에 어디선가 봤는데, sprintf는 buffer overflow attack 땜시 쓰지 말라더군요. snprintf를 쓰라고 들었슴당. :)

It's better to burn out than to fade away. -- Kurt Cobain.

익명 사용자의 이미지

aeronova wrote:
예전에 어디선가 봤는데, sprintf는 buffer overflow attack 땜시 쓰지 말라더군요. snprintf를 쓰라고 들었슴당. :)

그래서 %.*s 를 예로 들어주신거 같은데요.

.을 찍고 *를 하면 해당 인자의 값을 취해서 그만큼만 데이터 길이를 짤라서 취합니다.
그러므로 Buffer overflow를 방지 가능하겠죠.
만약 점(.)을 안찍고 하면 가능하겠네요.