Sdílet prostřednictvím


C6273

6273 - Upozornění, které nejsou celé předaný jako parametr <number> Při volání <function> vyžaduje celé číslo: Pokud předáním hodnoty ukazatel by měl sloužit %p

Toto upozornění označuje formát řetězce například Určuje celé číslo, %d, délka nebo přednost specifikace pro printf , ale jiné než celočíselné jako float, řetězec, nebo struct předána jako parametr.Tato závada je pravděpodobně za následek nesprávné výstup.

Příklad

Následující kód vygeneruje tato upozornění, protože je celé číslo požadované místo float na sprintffunkce:

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

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

Následující kód používá celé odevzdaných opravit toto upozornění:

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

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

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

Následující kód používá funkce bezpečné řetězce manipulace, sprintf_s, opravit toto upozornění:

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

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

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

Toto upozornění není použitelná v systémech Windows 9 x a Windows NT verze 4 protože %p není podporován na těchto platformách.

Viz také

Referenční dokumentace

sprintf, _sprintf_l, swprintf, _swprintf_l, __swprintf_l