无法在c ++中使用sprintf打印字符串值

时间:2012-05-29 13:31:04

标签: c++ visual-c++

我的函数有两个LPTSTR类型的参数,我正在尝试使用sprintf打印这两个值,如下所示,我无法打印确切的值。

int __stdcall Logon(LPTSTR UserName, LPTSTR Password)
{
  char Buffer[2048];
  sprintf(Buffer,"UserName: %s\n m_Password: %s\n",UserName,Password);
  FILE *Ls=fopen("lo.log",a);
  fprintf(Ls,Buffer);
  fclose(Ls);
}

2 个答案:

答案 0 :(得分:4)

在项目设置中修复“使用Unicode字符串”或使用

_stprintf(Buffer, _T("UserName: %S\n m_Password: %S\n"), UserName, Password);

#include <tchar.h>

如果您使用Unicode(并且确实如此),请使用'%S'格式。

答案 1 :(得分:2)

假设UserNamePassword存储为宽字符串(wchar_t)并且您尝试将它们放入char[]缓冲区,则visual c ++使用{{ 1}}来完成这个。

%S