달력

122024  이전 다음

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31

[함수] sprintf - 출력

C 2008. 5. 16. 08:53

sprintf 함수는 printf 함수와 유사한 함수이다. 일단 원형을 보자.  

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
Posted by 알 수 없는 사용자
|