sprintf, CString.Format 에서 포맷 정할때 길이를 유동적으로 만들기

Posted by 빵빵빵
2010/07/01 17:53 전산(컴퓨터)




sprintf문이나 CString의 Format 함수를 사용할때 만들어 지는 문자의 길이를 유동적으로 하고 싶을때가 있죠.

C/C++에서는 메모리 할당을 하거나 정해진 만큼만 써야 해서 이렇게 사용할 일은 별로 없을 거 같지만...

제가 프로젝트를 진행하다보니깐 정말 아주~~~ 아주~~~ 간~~~혹!!! 필요할 때가 있더군요.


이런게 있었는데 하도 안쓰는 문법(?)이다보니 한번씩 쓸때 기억이 안날때가 있더라구요.

검색도 잘 안되고... ㅡㅡ;



예를 보면 다음과 같습니다.

===========================================



이라고 하면 desc에 0000001000 이라고 찍히죠.



처리 순서는 다음과 같습니다.

첫번째, 3번째 인수로 들어가 있는 10이 앞에 %0*d 를 %010d 로 만들어 주고,

두번째, atoi("1000")이 거기다 1000을 넣어주죠.

세번째, 포맷이 10개의 0으로 채운데다가 숫자를 넣는 거니깐 적절히 만들어 주지요.



세번째 인수인 10 대신 변수를 써서 유동적인 길이의 문자열을 만들 수 있습니다.

다만, desc에 할당된 메모리 사이즈보단 크면 안되겠죠~



sprintf의 경우 맨뒤에 null이 끼어들어가는 걸로 기억이 나는데...

이럴경우 세번째 인수는 desc의 사이즈 - 1 까지만 허용되겠죠?
2010/07/01 17:53 2010/07/01 17:53

이 글에는 트랙백을 보낼 수 없습니다