Необработанное исключение с помощью wsprintf - PullRequest
0 голосов
/ 12 октября 2010

Ниже кода выдает необработанное исключение на wsprintf.

 #define FRONT_IMAGE_NAME "Image01front.bmp"
 void GetName(LPTSTR FileName)
 {

     wsprintf(FileName, "%s", FRONT_IMAGE_NAME);
 }

 int main()
 {

    GetName(FRONT_IMAGE_NAME);
    return 0;
 }

Пожалуйста, дайте мне знать, почему на wsprintf генерируется исключение.

Спасибо.

Ответы [ 2 ]

0 голосов
/ 13 октября 2010

LPTSTR - это определение типа.LPTSTR фактически является TCHAR *, который в зависимости от того, определен ли UNICODE, соответствует либо char *, либо wchar_t *.

Вам необходимо инициализировать LPTSTR до достаточного размера для строки, которую вы хотите вернуть.Это можно сделать двумя способами: в стеке или в куче (с новым): в стеке: TCHAR FileName [50];wsprintf (FileName, "% s", FRONT_IMAGE_NAME);

В куче: LPTSTR FileName = new TCHAR [50];wsprintf (FileName, "% s", FRONT_IMAGE_NAME);удалить [] FileName;// НЕ ЗАБУДЬТЕ ЭТО!

0 голосов
/ 12 октября 2010

Вы, кажется, пишете из FRONT_IMAGE_NAME в FRONT_IMAGE_NAME. Вы не можете писать что-то, что не является буфером.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...