경고 C6303
형식 문자열이 일치하지 않습니다.
설명
이 경고는 서식 문자열이 좁은 문자열을 지정하지만 대신 와이드 문자열을 전달하고 있음을 나타냅니다. 경고의 한 가지 원인은 사용하거나 wprintf
사용할 때 printf
의 %s
의미와 %S
대칭 이동 때문입니다. 이 결함으로 인해 잠재적으로 잘못된 출력 외에도 충돌이 발생할 수 있습니다.
코드 분석 이름: WCHAR_CHAR_ARGUMENT_TO_FORMAT_FUNCTION
예시
다음 샘플 코드는 이 경고를 생성합니다. buff
은 와이드 문자열이지만 호출에는 printf_s
다음과 같이 짧은 문자열이 %s
필요합니다.
#include <stdio.h>
void f()
{
wchar_t buff[5] = L"hi";
printf_s("%s", buff);
}
다음 샘플 코드는 와이드 문자열을 지정하는 데 사용하여 %ls
이 문제를 해결합니다. 또는 like 함수와 %S
함께 printf
사용할 때 와이드 문자열인 로 전환할 수 있습니다. 자세한 옵션은 형식 사양 구문 printf
및 wprintf
함수를 참조하세요.
#include <stdio.h>
void f()
{
wchar_t buff[5] = L"hi";
printf_s("%ls", buff);
}
참고 항목
피드백
https://aka.ms/ContentUserFeedback
출시 예정: 2024년 내내 콘텐츠에 대한 피드백 메커니즘으로 GitHub 문제를 단계적으로 폐지하고 이를 새로운 피드백 시스템으로 바꿀 예정입니다. 자세한 내용은 다음을 참조하세요.다음에 대한 사용자 의견 제출 및 보기