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 |