sprintf()만큼 편한 함수가 또 있을까요? 물론 있죠. 그러나 이렇게 반문할 정도로 sprintf()는 매우 편한 함수입니다. 화면에 출력하는 것뿐만 아니라 ASCII 통신을 할 때에도 얼마나 편한지 모르겠습니다.

 

형태 int sprintf (const char s, const char * format, ... );
인수 char *s 서식에 맞추어 저장할 메모리 영역의 포인터
char *format 서식 문자열
반환 int 출력된 문자 수를 반환하며 오류가 발생하면 음수를 반환

 

예를 보시죠.

sprintf( ptr, "%d %x %s", 123, 123, "forum.falinux.com");

얼마나 편합니까? 그러나 매우 조심해야할 함수가 sprintf()입니다. 자칫하면 이유도 모르고 프로그램이 죽는 불행한 일을 이 예쁜 sprintf()가 만들기 때문이죠. 찾기도 어렵습니다. 그 이유는? 문자열을 반환 받는 버퍼가 충분이 크지 않을 때죠. 나는 충분히 줬다고 했는데 안타깝게도 실제로는 부족했던 것이죠.

 

char buff[100];
sprintf( ptr, "%d %x %s", 123, 123, get_full_path());

 

결론은? sprintf()를 사용하실 때에는 인수로 사용하는 버퍼의 크기를 충분히 잡아 주라는 것이 되겠습니다. 해답이 너무 싱겁죠. 싱겁기는 하지만, sprintf() 사용에 유의하라는 말씀도 함께 드리는 것이므로 이해해 주세요. ^^