int sprintf(char *buffer,const char *format , ...);
printf 함수의 원형과 비교해 볼 때 첫 번째 인수 buffer가 추가되어 있다는 점만 다르다. 그외 사용하는 방법이나 %d, %f 등의 서식은 prinf 함수와 동일하다. printf는 서식화된 출력을 화면으로 내 보내는데 비해 sprintf 함수는 첫 번째 인수로 전달된 buffer 배열로 보낸다는 점이 다르다. 이 함수로 서식화된 문자열을 조립한 후 화면으로 그대로 출력할 수도 있고 파일로도 출력할 수 있으며 그래픽 화면으로도 출력할 수 있다.
sprintf 함수는 서식화된 출력을 문자열로 작성하는 것이 원래의 목적이지만 수치값을 문자열 형태로 변환할 때도 사용할 수 있다. %d 서식을 사용하면 정수를 문자열로 바꿀 수 있고 %f 서식을 사용하면 실수를 문자열로 바꿀 수도 있다. 뿐만 아니라 폭이나 유효 자리수 지정 등의 복잡한 서식까지 활용할 수 있으므로 전문 변환 함수보다 상세한 지정이 가능하다. 다음 예제를 보자.
예 제 : sprintf |
#include <Turboc.h>
void main(void){
char str[128];
int i=123;
double d=3.1415;
sprintf(str,"%d",i);
printf("정수를 문자열로 : %s\n",str);
sprintf(str,"%.2f",d);
printf("실수를 문자열로 : %s\n",str);
sprintf(str,"%e",d);
printf("실수를 부동 소수점 형식의 문자열로 : %s\n",str);
}
정수형 변수 i와 실수형 변수 d를 sprintf 함수와 %d, %f 서식을 사용하여 문자열로 출력했는데 결과적으로는 문자열 형태로 변환한 것이다. 실행 결과는 다음과 같다.
정수를 문자열로 : 123
실수를 문자열로 : 3.14
실수를 부동 소수점 형식의 문자열로 : 3.141500e+000
정수형 변수 i를 %d 서식으로 받아 str로 출력하면 i의 값이 문자열 str로 변환되는 효과가 있다. 마찬가지로 실수형 변수 d를 %f 서식으로 받으면 실수가 문자열로 변환되며 %e 서식으로 받으면 부동 소수점 형식으로 변환할 수도 있다. 뿐만 아니라 %와 f사이에 총자리수나 유효 자리수 등을 지정할 수 있으므로 일반적인 문자열 변환 함수보다 훨씬 더 기능이 많다. %.2f 서식을 사용하면 소수점 이하 두자리까지만 그것도 반올림까지해서 문자열로 변환한다.
sprintf 함수 하나만 있어도 대부분의 수치를 문자열로 바꿀 수 있는 셈이다. 서식의 정확한 사용법이 조금 복잡하지만 이미 printf에 익숙하다면 기존 지식을 활용하여 직관적인 방법으로 변환할 수 있어 편리하다. 그러나 이 함수에도 단점이 있는데 너무 덩치가 커서 실행 파일이 커진다는 것과 속도가 느리다는 점이다. 서식이 워낙 다양하고 복잡하기 때문에 아무래도 itoa, gcvt같은 전용 변환 함수보다는 크기가 클 수밖에 없다.
'C' 카테고리의 다른 글
gcc 컴파일 옵션 (0) | 2008.07.16 |
---|---|
make (0) | 2008.06.04 |
[함수] memcpy - 메모리카피 (0) | 2008.05.16 |
[함수] scanf - 문자입력받기 (0) | 2008.05.15 |
[함수] printf - 표준출력 (0) | 2008.05.15 |