경고 C6273

'function'을 호출할 때 정수가 필요한 경우 'number' 매개 변수로 전달되는 정수가 아닌 경우

설명

이 경고는 like 함수의 printf 형식 문자열 지정자가 정수 형식을 예상하지만 , 문자열과 같은 float정수가 아니거나 struct 전달되고 있음을 나타냅니다. 이 경고는 정수 형식 지정자(예: %d정수) 및 너비/정밀도 지정자(예: %*.*f정수)를 검사합니다. 이 결함으로 인해 잘못된 출력이 발생할 수 있습니다.

코드 분석 이름: NON_INTEGER_ARGUMENT_TO_FORMAT_FUNCTION

예시

다음 코드는 함수 대신 float sprintf 정수가 필요하기 때문에 이 경고를 생성합니다.

#include <stdio.h>

void f_defective()
{
  char buff[50];
  float f=1.5;

  sprintf(buff, "%d",f);
}

다음 코드는 정수 캐스트를 사용하여 이 경고를 수정합니다. 또는 형식 지정자를 형식과 일치하도록 수정하여 경고를 수정할 수 있습니다.

#include <stdio.h>

void f_corrected()
{
  char buff[50];
  float f=1.5;

  sprintf(buff,"%d",(int)f);
}

다음 코드는 안전한 문자열 조작 함수 sprintf_s를 사용하여 이 경고를 수정합니다.

#include <stdio.h>

void f_safe()
{
  char buff[50];
  float f=1.5;

  sprintf_s(buff,50,"%d",(int)f);
}

%p는 이러한 플랫폼에서 지원되지 않으므로 Windows 9x 및 Windows NT 버전 4에서는 이 경고를 적용할 수 없습니다.

참고 항목

형식 사양 구문: printf 및 wprintf 함수
sprintf, _sprintf_l, swprintf, _swprintf_l, __swprintf_l
C4477