C6273
更新 : 2007 年 11 月
警告 6273 - 整数でない値が引数 <数値> として渡されました。<関数> への呼び出しには整数が必要です: ポインタ値が渡されてようとしている場合は、%p を使用してください。
この警告は、書式指定文字列に、たとえば printf の長さまたは優先順位を指定する整数 %d が指定されているが、float、文字列、または 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);
}
Windows 9x および Windows NT 4 の場合、%p がサポートされないため、この警告は適用されません。