Aracılığıyla paylaş


C6273

Tamsayı olmayan <number> parametre olarak geçirilen 6273 - uyarı ne zaman tamsayı gerekli <function> çağrısında: işaretçi değeri iletilmezse, %p kullanılmalıdır

Biçim dizesi tamsayı, örneğin belirtir, bu uyarı gösterir, bir %d, uzunluk veya öncelik belirtimi için printf ancak bir tamsayı olmayan gibi bir float, dize veya struct parametre olarak geçildi.Bu büyük bir olasılıkla yanlış bir sonuca neden bozukluğudur.

Örnek

Aşağıdaki kod, bir tamsayı yerine gerekli olduğu için bu uyarı oluşturur bir float için sprintfişlevi:

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

void f_defective()
{
  char buff[50];
  float f=1.5;
  
  sprintf(buff, "%d",f);
}

Aşağıdaki kod bu uyarıyı düzeltmek için artığını tamsayı kullanır:

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

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

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

Aşağıdaki kod güvenli dize işleme işlevi kullanır sprintf_s, bu uyarı düzeltmek için:

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

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

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

Bu uyarı Windows 9 uygulanamaz x ve Windows NT sürüm 4 %p Bu platformlarda desteklenmediği için.

Ayrıca bkz.

Başvuru

sprintf, _sprintf_l, swprintf, _swprintf_l, __swprintf_l