fwprintf打印出垃圾

时间:2014-02-18 02:39:15

标签: c++ winapi printf

我有一个程序可以获取目录列表(由用户选择)并写入该目录中关联的目录和文件列表。但是,当打印到文件时,它总是打印出'?'然后是一个随机字符。我正在研究winapi,visual c ++ 2010 express。我也使用unicode(所以我使用宽字符)。我猜我的问题是在我正在使用的fwprintf函数中,因为它将目录/文件添加到我正确的std :: list中。这是我目前的职能:

// global list for testing
std::list<std::wstring> lDirectories;

void CleanupContents( const wchar_t *sDir )
{
  ListDirectoryContents( sDir ) // function that adds each file and directory to the std::list

  wchar_t dir[ MAX_PATH * 10 ];
  wsprintf( dir, L"%s\\ListOfFilesAndDirectories.txt", sDir );

  FILE* pFile;
  errno_t err = _wfopen_s( &pFile, dir, L"w" );

  while( !lDirectories.empty() )
  {
    fwprintf( pFile, L"%s", lDirectories.front() );
    lDirectories.pop_front();
  }

  err = fclose( pFile );
}

1 个答案:

答案 0 :(得分:7)

问题出在这一行:

fwprintf( pFile, L"%s", lDirectories.front() );

fwprintf需要wchar_t*,并且您提供wstring

更改为:

fwprintf( pFile, L"%s", lDirectories.front().c_str() );
相关问题