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
[1251] [답변] EDISEY/ c_str()/프포
담비 [ ] 3871 읽음    1999-04-15 00:18

안녕하세요! 담비입니다.

sprintf함수는 다음과 같이 정의되어있으며 버퍼에 특정 포맷에 맞추어진 스트링을
복사합니다.  printf함수의 타겟이 console이라는 점을 제외하고는 사용법은
동일합니다. 그리고 함수의 선언에서 [와 ]로 둘러싸인 부분은 선택적이라는것을
의미합니다. 또한 "..."의 표시는 [와 ]사이에서 표시되어진 형식이 동일한
형태로 반복될 수 있음을 의미합니다. 반복될 수 있는 조건은  *format이 어떤
형태를 취하냐에 따라 달라질 수 있습니다.

#include <stdio.h>
int sprintf(char *buffer, const char *format[, argument, ...]);

Help의 예를 보자면

#include <stdio.h>
#include <math.h>

int main(void)
{
    char buffer[80];

    sprintf(buffer, "An approximation of Pi is %f\n", M_PI);
    puts(buffer);
    return 0;
}

과 같이 되어있습니다.
M_PI의 값이 3.14라면 버퍼에 들어가는 값은 "An approximation of Pi is 3.14"가
됩니다. 만일 format의 인수가 "An approximation of Pi is 3.14"라면 M_PI라는
인수는 기술할 필요가 없겠지요.

c_str()함수는 AnsiString을 char* 형으로 변환해주는 AnsiString의 멤버함수
입니다.  즉 NULL로 끝나는 char형 배열을 return합니다. 정확히 말하면 그 주소를
넘겨줍니다. 그래서 주의할 점은, AnsiString은 동적으로 그 공간을 확보하기
때문에 이를 c_str()으로 변환하여 수정하고자 할 때는 상당한 주의를 요합니다.
확보되지 않은 특정 영역을 포인터로 변환하면 메모리의 어느곳을 가르키는지
장담할 수 없습니다. 그리고 그 부분을 수정한다면 에러가 발생하겠지요.
AnsiString에 관한 사항은 빌더의 강좌란의 51번의 내용을 참조하세요.



+ -

관련 글 리스트
1247 [질문] c_str()/프포 edisey 3617 1999/04/14
1249     [답변] EDISEY/ c_str()/프포 back99 3733 1999/04/14
1251     [답변] EDISEY/ c_str()/프포 담비 3871 1999/04/15
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.