Avertissement C6303

Mettre en forme une incompatibilité de chaîne.

Notes

Cet avertissement indique qu’une chaîne de format spécifie une chaîne de caractères étroite, mais qu’elle est passée à une chaîne de caractères large à la place. L’une des causes de l’avertissement est parce que la signification et %s%S le retournement lorsqu’il est utilisé avec printf ou wprintf. Ce défaut peut entraîner des blocages, en plus d’une sortie potentiellement incorrecte.

Nom de l’analyse du code : WCHAR_CHAR_ARGUMENT_TO_FORMAT_FUNCTION

Exemple

L’exemple de code suivant génère cet avertissement. buff est une chaîne de caractères large, mais l’appel printf_s attend une chaîne courte comme indiqué par %s:

#include <stdio.h>

void f()
{
    wchar_t buff[5] = L"hi";
    printf_s("%s", buff);
}

L’exemple de code suivant corrige ce problème en utilisant %ls pour spécifier une chaîne de caractères large. Vous pouvez également passer à %Sune chaîne large lorsqu’elle est utilisée avec printf des fonctions similaires. Consultez la syntaxe de spécification de format : printf et wprintf les fonctions pour plus d’options.

#include <stdio.h>

void f()
{
    wchar_t buff[5] = L"hi";
    printf_s("%ls", buff);
}

Voir aussi

Syntaxe de spécification de format : printf et wprintf fonctions
C4477
C6302