Avviso C6067
Il parametro 'number' nella chiamata a 'function' deve essere l'indirizzo della stringa
Osservazioni:
Questo avviso indica una mancata corrispondenza tra l'identificatore di formato e il parametro della funzione. Anche se l'avviso suggerisce l'uso dell'indirizzo della stringa, è necessario controllare il tipo di parametro previsto da una funzione prima di correggere il problema. Ad esempio, una %s
specifica per printf
richiede un argomento stringa, ma una %s
specifica in scanf
richiede un indirizzo della stringa.
Questo difetto potrebbe causare un arresto anomalo o un danneggiamento di qualche forma.
Nome dell'analisi del codice: NON_STRING_ARGUMENT_TO_FORMAT_FUNCTION
Esempio
Il codice seguente genera questo avviso perché viene passato un numero intero anziché una stringa:
#include <stdio.h>
void f_defective()
{
char *str = "Hello, World!";
printf("String:\n %s", 1);
// code ...
}
Per correggere l'avviso, passare una stringa come parametro a printf
come illustrato nel codice seguente:
#include <stdio.h>
void f_corrected()
{
char *str = "Hello, World!";
printf("String:\n %s", str);
// code ...
}
Il codice seguente genera questo avviso perché viene specificato un livello non corretto di riferimento indiretto quando si passa il parametro, il buffer, a 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;
}
}
Per correggere gli avvisi precedenti, passare il parametro corretto come illustrato nel codice seguente:
#include <stdio.h>
void h_corrected()
{
int retval;
char* buffer = new char(20);
if (buffer)
{
retval = scanf("%s", buffer);
// code...
delete buffer;
}
}
Il codice seguente usa funzioni di manipolazione delle stringhe sicure per correggere questo avviso:
#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);
}
Vedi anche
Sintassi della specifica del formato: funzioni printf e wprintf
sprintf_s, _sprintf_s_l, swprintf_s, _swprintf_s_l
printf, _printf_l, wprintf, _wprintf_l
scanf_s, _scanf_s_l, wscanf_s, _wscanf_s_l
C4313
C4477
Commenti e suggerimenti
https://aka.ms/ContentUserFeedback.
Presto disponibile: Nel corso del 2024 verranno gradualmente disattivati i problemi di GitHub come meccanismo di feedback per il contenuto e ciò verrà sostituito con un nuovo sistema di feedback. Per altre informazioni, vedereInvia e visualizza il feedback per