vsprintf_s 에 들어가는 인자가 유효한지 알수있을까요?
글쓴이: jungmoona / 작성시간: 화, 2010/06/01 - 11:22오후
써놓고 보니 질문이 좀 난해한듯합니다.
void Log( const char* szText, ... ) { char acTemp[1024]; va_list args; va_start(args, szText ); vsprintf_s( acTemp,1024,szText,args); va_end(args); ... } Log( "월급 100%인상" );
원칙적으론 100%% 를 넣어야 하지만
입력되는 string Runtime에 프로그래머가 아닌
다른 작업자가 넣어야 하는 상황입니다.
수작업이다 보니 규칙에 맞는 string Input 을 기대하기가 어렵습니다.
이런경우에 crt 함수중에 무효한 string 인지 체크 하는 방법이 있을까요?
Forums:
...
vsprintf_s 와 함께 주어진 format, args에 대해 필요한 버퍼크기를 구하는 함수가 있습니다.
(정확한 이름은 기억나질 않네요. see also section쯤에 있으리라 생각합니다.)
이 함수를 호출해서 리턴 값을 체크하면 될것 같습니다.
...
gcc의 경우에 함수를 선언하면서 "이 함수는 printf와 동일한 방식의 인자를 받음"이라고 선언해 주는 기능이 있습니다. 나중에 잘못된 방식의 인자를 넣으면 컴파일러가 경고를 내줍니다.
(컴파일하는 사람이 경고를 무시한다면... 팀에서 자르세요.)
http://gcc.gnu.org/onlinedocs/gcc/Function-Attributes.html
여기서 format을 찾아보세요.
댓글 달기