sprintf문이나 CString의 Format 함수를 사용할때 만들어 지는 문자의 길이를 유동적으로 하고 싶을때가 있죠.
C/C++에서는 메모리 할당을 하거나 정해진 만큼만 써야 해서 이렇게 사용할 일은 별로 없을 거 같지만...
제가 프로젝트를 진행하다보니깐 정말 아주~~~ 아주~~~ 간~~~혹!!! 필요할 때가 있더군요.
이런게 있었는데 하도 안쓰는 문법(?)이다보니 한번씩 쓸때 기억이 안날때가 있더라구요.
검색도 잘 안되고... ㅡㅡ;
예를 보면 다음과 같습니다.
===========================================
이라고 하면 desc에 0000001000 이라고 찍히죠.
처리 순서는 다음과 같습니다.
첫번째, 3번째 인수로 들어가 있는 10이 앞에 %0*d 를 %010d 로 만들어 주고,
두번째, atoi("1000")이 거기다 1000을 넣어주죠.
세번째, 포맷이 10개의 0으로 채운데다가 숫자를 넣는 거니깐 적절히 만들어 주지요.
세번째 인수인 10 대신 변수를 써서 유동적인 길이의 문자열을 만들 수 있습니다.
다만, desc에 할당된 메모리 사이즈보단 크면 안되겠죠~
sprintf의 경우 맨뒤에 null이 끼어들어가는 걸로 기억이 나는데...
이럴경우 세번째 인수는 desc의 사이즈 - 1 까지만 허용되겠죠?