Bagikan melalui


Peringatan C6303

Format string tidak cocok.

Keterangan

Peringatan ini menunjukkan bahwa string format menentukan string karakter sempit, tetapi sedang diteruskan string karakter lebar sebagai gantinya. Salah satu penyebab peringatan adalah karena arti dan %s membalik %S ketika digunakan dengan printf atau wprintf. Cacat ini dapat menyebabkan crash, selain output yang berpotensi salah.

Nama analisis kode: WCHAR_CHAR_ARGUMENT_TO_FORMAT_FUNCTION

Contoh

Contoh kode berikut menghasilkan peringatan ini. buff adalah string karakter yang lebar, tetapi printf_s panggilan mengharapkan string pendek seperti yang ditunjukkan oleh %s:

#include <stdio.h>

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

Contoh kode berikut memulihkan masalah ini dengan menggunakan %ls untuk menentukan string karakter yang luas. Atau itu bisa saja beralih ke %S, yang merupakan string lebar ketika digunakan dengan printf fungsi seperti. Lihat Sintaks spesifikasi format: printf dan wprintf fungsi untuk opsi lainnya.

#include <stdio.h>

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

Lihat juga

Sintaks spesifikasi format: printf dan wprintf fungsi
C4477
C6302