我写了以下代码:
int fd = _dup(fileno(stdout));
FILE* tmp = freopen("tmp","w+",stdout);
HANDLE out = GetStdHandle(STD_OUTPUT_HANDLE);
if (out == INVALID_HANDLE_VALUE){
//error
}
else if (out == NULL) {
//error
}
else {
WriteFile(out, "num", sizeof("num"), NULL, NULL);
}
在最后一行我得到一个断言“Unhandled exception...:Access violation writing location 0x000000
”
什么可能是一个问题,并解决它?
谢谢。
P.S:由于项目的限制,我不能使用freopen
答案 0 :(得分:4)
WriteFile的最后两个参数中只有一个可以为NULL,另一个必须是有效指针。
http://msdn.microsoft.com/en-us/library/windows/desktop/aa365747.aspx
在您的情况下,您可能想要使用lpNumberOfBytesWritten。
DWORD written;
WriteFile(out, "num", sizeof("num"), &written, NULL);