奇怪!printf( "%s",xx)只能输出一个字符。。。

wklfjasdlfk 2011-05-22 12:44:07
源码如下:(列出所有进程的名字和PID)

#include "stdafx.h"
#include <windows.h>
#include <tlhelp32.h>
#include <iostream>
using namespace std;

int _tmain(int argc, _TCHAR* argv[])
{
PROCESSENTRY32 pe32;
pe32.dwSize=sizeof(PROCESSENTRY32);
HANDLE showPro=CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,NULL);
if (showPro==INVALID_HANDLE_VALUE)
{
cout<<"f 1"<<endl;
return 0;
}
if (!Process32First(showPro,&pe32))
{
cout<<"f 2"<<endl;
return 0;
}
do
{
printf( "\nPROCESS NAME: %s \n", pe32.szExeFile );//这里只输出一个字符!!
cout<<"It's pid is "<<pe32.th32ProcessID<<endl;
} while (Process32Next(showPro,&pe32));
return 0;
}
...全文
765 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
wklfjasdlfk 2011-05-22
  • 打赏
  • 举报
回复 3
呵呵,楼上各位很有效率啊。不过我也发现了哦~
最简单的方法是那个printf(%s)中的小写s改成大写的S
ljt3969636 2011-05-22
  • 打赏
  • 举报
回复
晕 说错了 改成非UNICODE的多字符集~~
ljt3969636 2011-05-22
  • 打赏
  • 举报
回复
你上面的代码应该把工程字符集改成UNICODE~
测试NULL 2011-05-22
  • 打赏
  • 举报
回复
你改成:
cout << endl << _T("PROCESS NAME: ") << pe32.szExeFile << endl;
这样看看。。。。
KID_coder 2011-05-22
  • 打赏
  • 举报
回复

// FunTest.cpp : 定义控制台应用程序的入口点。
//

#include "stdafx.h"
#include <windows.h>
#include <tlhelp32.h>
#include <iostream>
using namespace std;

int _tmain(int argc, _TCHAR* argv[])
{
PROCESSENTRY32 pe32;
pe32.dwSize=sizeof(PROCESSENTRY32);
HANDLE showPro=CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,NULL);
if (showPro==INVALID_HANDLE_VALUE)
{
cout<<"f 1"<<endl;
return 0;
}
if (!Process32First(showPro,&pe32))
{
cout<<"f 2"<<endl;
return 0;
}
do
{
wcout << "\nPROCESS NAME: " << pe32.szExeFile << endl;
// wprintf( "\nPROCESS NAME: %s \n", (_TCHAR*)(&pe32.szExeFile) );//这里只输出一个字符!!
cout<<"It's pid is "<<pe32.th32ProcessID<<endl;
} while (Process32Next(showPro,&pe32));
system("pause");
return 0;
}

宽字符的问题。。。
测试NULL 2011-05-22
  • 打赏
  • 举报
回复
没有啊,我这边可以输出全部的字符噢。。。。

69,369

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧