운동하는 개발자/c++
sprintf_s 오류 Debug Assertion Failed! , Incorrect format specifier
우용현
2025. 2. 25. 18:22
728x90

MFC에서 문자열을 변환하는 과정에서 Runtime Exception 이 발생했고 내용은 위와 같았다
Microsoft Visual C++ Runtime Library
Debug Assertion Failed!
Program: -
File: minkernel\crts\ucrt\inc\corecrt_internal_stdio_output.h Line: 1690
Expression: ("Incorrect format specifier", 0)
For information on how your program can cause an assertion failure, see the Visual C++ documentation on asserts.
(Press Retry to debug the application)
코드를 추적해 보니
sprintf_s(szSendBuffer, sizeof(szSendBuffer), m_csSendData.GetBuffer())
위 부분이었는데 CString을 char array로 변경하는 간단한 코드였다.
원인을 확인해 보니 CString인 m_csSendData 변수에 "%"라는 특수문자가 있었고 sprintf 특성상 이 특수문자가 뒤의 문자와 결합하려고 시도하였고(예: %s, %d) 존재하지 않는 서식문자이기에 에러가 발생하였던 것이다
아래는 수정된 코드
strcpy_s(szSendBuffer, sizeof(szSendBuffer), CT2A(m_csSendData));
이상 끝~
728x90