下面的代码会在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会产生异常。
感谢。
答案 0 :(得分:0)
您好像是从FRONT_IMAGE_NAME写信到FRONT_IMAGE_NAME。你不能写一些不是缓冲区的东西。
答案 1 :(得分:0)
LPTSTR是一个typedef。一个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); delete [] FileName; //不要忘记这个!