728x90
반응형

포멧을 가진 문자열을 생성하기 위해서 sprintf함수를 많이 사용합니다.

 

요즘은 글로벌한 시대라 wide string을 많이 사용하기 때문에 sprintf의 wide string 버전 함수가 필요할 때가 많습니다.

 

그런데 swprintf 와 wsprintf 함수가 존재합니다. 두 함수는 동일한 목적을 가진 함수 입니다.

 

이 두 함수의 차이점은 아래와 같습니다.

 

 - swprintf 는 VC++ 라이브러리에 포함된 함수로서 우리가 사용해야 할 함수 입니다.

 - wsprintf 는 WinAPI에 포함된 라이브러리이고, format string 파라메터 중에 지원하지 않는 부분이 있습니다. 예를 들어 "*" 같은 width 특수화를 지원하지 않습니다.

 

swprintf를 사용하는 것이 옳겠습니다.

 

그리고 VS2005 부터는 이 함수의 secure 버전인 swprintf_s 를 사용하는 것이 좋습니다.

_s가 붙으면 버퍼의 크기를 파라메터로 받아 버퍼를 넘어설 때 exception을 발생시켜 줍니다. 또한 format string이 유효하지 않을 때도 exception을 발생 시켜 주도록 되어 있습니다.

exception이 발생하니까 그냥 swprintf를 써야 겠다고 생각하는 프로그래머가 있다면 바보같은 선택이니 왜 여기서 exception을 발생시켜주도록 변경되었을 지를 잘 생각해 보시기 바랍니다

728x90
반응형

'back-end > C & API' 카테고리의 다른 글

window api RECT 관련 API 함수들  (0) 2023.07.21
window api GetCurPos, ScreenToClient  (0) 2023.07.21
리스트 간단 설명 요약  (0) 2023.07.21
c언어에서 리스트란?  (0) 2023.07.21
STL 란?  (0) 2023.07.21

+ Recent posts