경고 C6064
변환 지정자 'number'에 해당하는 'function-name'에 대한 정수 인수가 없습니다.
이 경고는 코드가 형식 문자열과 일치하기에 충분한 인수를 제공하지 않으며 누락된 인수 중 하나가 정수임을 나타냅니다.
설명
이 결함으로 인해 잘못된 출력이 발생할 수 있으며, 더 위험한 경우 스택 오버플로가 발생할 수 있습니다.
코드 분석 이름: MISSING_INTEGER_ARGUMENT_TO_FORMAT_FUNCTION
예시
다음 코드는 호출 sprintf_s
에서 잘못된 수의 인수를 사용하고 누락된 인수가 정수이므로 이 경고를 생성합니다. 안전하지 않은 함수 sprintf
가 더 안전한 변형 sprintf_s
대신 사용된 경우 이 코드로 인해 예기치 않은 출력 대신 스택 오버플로가 발생할 수 있습니다.
void f()
{
char buff[8];
const char *string="Hello";
sprintf_s(buff, sizeof(buff), "%s %d", string); // Attempts to print "Hello "
// followed by a number up to eleven characters long, depending on the garbage
// found on the stack. Any number other than a single non-negative digit can't
// fit in the 8 char buffer and leave room for the trailing null. If sprintf
// had been used instead, it would overflow.
}
이 경고를 수정하려면 누락된 인수를 지정하거나 형식 문자열을 조정합니다. 이 예제에서는 누락된 정수 값을 추가합니다.
void f()
{
char buff[8];
const char *string = "Hello";
sprintf_s(buff, sizeof(buff), "%s %d", string, strlen(string));
}
참고 항목
피드백
https://aka.ms/ContentUserFeedback
출시 예정: 2024년 내내 콘텐츠에 대한 피드백 메커니즘으로 GitHub 문제를 단계적으로 폐지하고 이를 새로운 피드백 시스템으로 바꿀 예정입니다. 자세한 내용은 다음을 참조하세요.다음에 대한 사용자 의견 제출 및 보기