易配网 - 手机资讯、时事新闻、网络资料
你的位置:易配网 > 新闻 > _open_osfhandle头文件_

_open_osfhandle头文件”相关资讯


_open_osfhandle头文件_:...

如何在VS2008中C++调度控制台实现多行输入

1、在项目自动生成的stdafx.h文件中添加下面头文件

#include <io.h>
#include <fcntl.h>
#include <stdio.h>

2、把下面的函数加到你初始化的地方,然后你就可以使用printf\scanf函数了

void InitConsoleWindow()
{
int nCrt = 0;
FILE* fp;
AllocConsole();
nCrt = _open_osfhandle((long)GetStdHandle(STD_OUTPUT_HANDLE), _O_TEXT);
fp = _fdopen(nCrt, "w");
*stdout = *fp;
setvbuf(stdout, NULL, _IONBF, 0);
}

c++中管道问题,为什么 老是捕获不到printf 的数据

void CpipeDlg::OnBnClickedButton1() { //建立管道 SECURITY_ATTRIBUTES sa; HANDLE hRead,hWrite; sa.nLength = sizeof(SECURITY_ATTRIBUTES); sa.lpSecurityDescriptor = NULL; sa.bInheritHandle = TRUE; if (!CreatePipe(&hRead,&hWrite,... void CpipeDlg::OnBnClickedButton1()
{
//建立管道
SECURITY_ATTRIBUTES sa;
HANDLE hRead,hWrite;
sa.nLength = sizeof(SECURITY_ATTRIBUTES);
sa.lpSecurityDescriptor = NULL;
sa.bInheritHandle = TRUE;
if (!CreatePipe(&hRead,&hWrite,NULL,0))
{
MessageBox("Error On CreatePipe()");
return;
}

//将标准输出设置到 hwrite 上
int ret=SetStdHandle( STD_OUTPUT_HANDLE , hWrite );

char ReadBuf[100]={0};
DWORD ReadNum=0;
while (1)
{

//因为printf 是向标准输出 里面输数据的,所以我认为会向管道里面输数据
printf("ReadBuf");
cout<<"ReadBuf"<<endl;
fflush(stdout);
//不管怎么样都获取不到数据!!!!!!!
ReadFile(hRead, ReadBuf, 5, &ReadNum, NULL);
printf("从管道[%s]读取%d字节数据\n", ReadBuf, ReadNum);
}

}


本文出自 易配网 www.yiper.cn
手机大全
  • 本文来自: 易配网,转载请保留出处!
  • 本文链接: _open_osfhandle头文件_