在Win32应用程序上默认是没有控制台窗口的,但经常需要用来调试。如何打开呢?
1.设置两个全局的句柄,标准输入和输出。
HANDLE hStdin;
HANDLE hStdout;
2.建立控制台,并获得句柄(顺序很重要,AllocConsole放在后面会使得hStdin和hStdout获取不到句柄)
AllocConsole();
hStdin = GetStdHandle(STD_INPUT_HANDLE);
hStdout =GetStdHandle(STD_OUTPUT_HANDLE);
3.输出
char* buffer ="lzh123";
DWORD length =strlen(buffer);
WriteFile(hStdout,buffer,length,&length,0);
4.输入(输入读到buffer中)
char buffer[5];
DWORD length = 5;
ReadFile(hStdin,buffer,length,&length,0);
注意:如果输入
dd(按回车)
则数组buffer为:
buffer[0] = ‘d’;
buffer[1] = ‘d’;
buffer[2] = ‘\r’;
buffer[3] = ‘\n’;
buffer[4] = ????;
所以通常在输入前将buffer[4] = ‘\0’;
5.释放控制台
FreeConsole();
最好的方法:
AllocConsole();
freopen("conin$","r+t",stdin);
freopen("conout$","w+t",stdout);
//这样printf,scanf,cin,cout都可以用
int lzh;
cout<<"111"<<endl;
cin>>lzh;
cout<<"thisis "<<lzh<<endl;
fclose(stdin);
fclose(stdout);
转帖:http://blog.csdn.net/lzhlzz/article/details/6593614
本文介绍在Win32应用程序中如何通过创建控制台进行调试的方法。包括设置标准输入输出句柄、读写操作及使用printf等标准I/O库函数进行交互。
5978

被折叠的 条评论
为什么被折叠?



