C6067
Aviso C6067: parâmetro <number>na telefonar para <função>deve ser o endereço da seqüência de caracteres
Este aviso indica uma incompatibilidade entre o especificador de formato e o parâmetro de função.Mesmo que o aviso sugere usando o endereço da seqüência de caracteres, você deve verificar o tipo de parâmetro de que uma função de espera antes de corrigir o problema.Por exemplo, um %s especificação para printf requer um argumento de seqüência de caracteres, mas um %s especificação em scanf requer um endereço da seqüência de caracteres.
Esse defeito tem probabilidade de causar uma falhar ou corrupção de alguma forma.
Exemplo
O código a seguir gera este aviso porque um número inteiro é passado em vez de uma seqüência de caracteres:
#include <stdio.h>
void f_defective( )
{
char *str = "Hello, World!";
printf("String:\n %s",1); // warning
// code ...
}
Para corrigir o aviso, passar uma cadeia de caracteres sistema autônomo um parâmetro para printf sistema autônomo mostra o código a seguir:
#include <stdio.h>
void f_corrected( )
{
char *str = "Hello, World!";
printf("String:\n %s",str);
// code ...
}
O código a seguir gera este aviso porque um nível de indireção incorreto for especificado quando o parâmetro de buffer, scanf:
#include <stdio.h>
void h_defective( )
{
int retval;
char* buffer = new char(20);
if ( buffer )
{
retval = scanf("%s", &buffer); // warning C6067
// code...
delete buffer ;
}
}
Para corrigir acima avisos, o parâmetro correto psistema autônomos sistema autônomo mostrado no código a seguir:
#include <stdio.h>
void h_corrected( )
{
int retval;
char* buffer = new char(20);
if ( buffer )
{
retval = scanf("%s", buffer);
// code...
delete buffer;
}
}
O código a seguir usa funções de manipulação de seqüência segura para corrigir este aviso:
#include <stdio.h>
void f_safe( )
{
char buff[20];
int retVal;
sprintf_s( buff, 20, "%s %s", "Hello", "World!" );
printf_s( "String:\n %s %s", "Hello", "World!" );
retVal = scanf_s("%s", buff, 20);
}
Consulte também
Referência
sprintf_s _sprintf_s_l swprintf_s, _swprintf_s_l