printf~~~ sprintf~~~ 이렇케 사용할수도 있습니다.. ^^*
main() { char temp[16] = {0}; sprintf(temp, "TEST : %.*s", 5, "1234567890"); printf("%.*s\n%s\n", strlen(temp), "12345678901234567890", temp); }
예전에 어디선가 봤는데, sprintf는 buffer overflow attack 땜시 쓰지 말라더군요. snprintf를 쓰라고 들었슴당. :)
It's better to burn out than to fade away. -- Kurt Cobain.
그래서 %.*s 를 예로 들어주신거 같은데요.
.을 찍고 *를 하면 해당 인자의 값을 취해서 그만큼만 데이터 길이를 짤라서 취합니다. 그러므로 Buffer overflow를 방지 가능하겠죠. 만약 점(.)을 안찍고 하면 가능하겠네요.
텍스트 포맷에 대한 자세한 정보
<code>
<blockcode>
<apache>
<applescript>
<autoconf>
<awk>
<bash>
<c>
<cpp>
<css>
<diff>
<drupal5>
<drupal6>
<gdb>
<html>
<html5>
<java>
<javascript>
<ldif>
<lua>
<make>
<mysql>
<perl>
<perl6>
<php>
<pgsql>
<proftpd>
<python>
<reg>
<spec>
<ruby>
<foo>
[foo]
딴지는 아닙니다..
예전에 어디선가 봤는데, sprintf는 buffer overflow attack 땜시 쓰지 말라더군요. snprintf를 쓰라고 들었슴당. :)
It's better to burn out than to fade away. -- Kurt Cobain.
Re: 딴지는 아닙니다..
그래서 %.*s 를 예로 들어주신거 같은데요.
.을 찍고 *를 하면 해당 인자의 값을 취해서 그만큼만 데이터 길이를 짤라서 취합니다.
그러므로 Buffer overflow를 방지 가능하겠죠.
만약 점(.)을 안찍고 하면 가능하겠네요.
댓글 달기