안녕하세요! 담비입니다.
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번의 내용을 참조하세요.
|