C++Builder Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
C++빌더 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
메신저 프로젝트
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

C++빌더 Q&A
C++Builder Programming Q&A
[893] [답변] DUDB0916/ c++ 질문이 더 맞겠죠?/프포
박지훈.임프 [cbuilder] 3883 읽음    1999-01-07 07:23
안녕하세요. 천리안 프로그래머포럼 C++Builder 담당자 임펠리테리입니다.

링크에러 22 라는 것은 아마도 빌더의 버그인것 같습니다.

sprintf는 printf처럼 지정해준 포맷을 화면이 아닌 버퍼로 저장하는 함수입니다.

"%02d : " 라고 했으니, 만약 인덱스를 11이라고 줬다면 저장되는 문자열은

"11 : " 이라고 되었겠지요? 이게 총 다섯 문자인데, 이 문자들 외에 마지막에

문자열의 끝을 표시하는 널 값이 추가되므로 총 여섯바이트가 필요한 겁니다.

그런데.. 이와 같은 방식에도 문제는 있습니다. 원래 소스가 좀 단순하게 생각하고

작성한거군요. 만약 콤보박스의 아이템 갯수가 100개 이상이라서 index가 99이상

넘어갈 경우가 생긴다면, sprintf는 값을 변경시키지 않기 위해 100번째, 101번째는

100, 101이라는 값이 그대로 들어갈겁니다. 그럼 당연히 다시 한바이트가 모자랍니다.

또한 1000번째가 넘는 아이템이 있다면 두바이트가 모자라겠지요? 아마도 소스의

원작자가 생각을 많이 하지 않았든지, sprintf에서 지정한 %02d를 쓰면 반드시

두개의 숫자만 지정된다고 생각했든지.. 둘중의 하나이군요.

그럼 참고하시길...



독립문에서 임펠리테리였습니다.

(cbuilder, cbuilder@thrunet.com)



+ -

관련 글 리스트
888 [질문] c++ 질문이 더 맞겠죠?/프포 dudb0916 3875 1999/01/06
893     [답변] DUDB0916/ c++ 질문이 더 맞겠죠?/프포 박지훈.임프 3883 1999/01/07
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.