C6273

警告 C6273 - 整数でない値がパラメーター <数値> として渡されました。<関数> への呼び出しには整数が必要です: ポインター値が渡されようとしている場合は、%p を使用してください

この警告は、書式文字列で (%dprintf の長さや優先度の指定など) 整数が指定されていても、float、string、struct などの整数以外の文字がパラメーターとして渡されていることを示します。 この欠陥により、誤った出力が生成される可能性があります。

次のコードでは、sprintf 関数で float ではなく文字列が必要なため、この警告が発生します。

#include <stdio.h>
#include <string.h>

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

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

次のコードでは、この警告を解決するために、整数のキャストを使用ます。

#include <stdio.h>
#include <string.h>

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

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

次のコードでは、この警告を解決するために、安全な文字列操作関数 sprintf_s を使用します。

#include <stdio.h>
#include <string.h>

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

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

これらのプラットフォームでは %p がサポートされていないため、この警告は Windows 9x および Windows NT version 4 には適用されません。

関連項目

sprintf, _sprintf_l, swprintf, _swprintf_l, __swprintf_l