Я написал следующий код:WriteFile на стандартный вывод терпит неудачу после freopen
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
Но вы используете 'freopen'? Вы проверяете, является ли это недопустимым дескриптором или значением null, а затем приступить к записи в файл в любом случае. В этом случае кажется, что оно равно null. Возможно, вам понадобится последний вопрос 'else' до' WriteFile'. FYI Я бы порекомендовал 'std :: fstream' в C++ – AJG85
@ AJG85 - // Ошибка команды возвращает дескриптор ошибок, поэтому он не может попасть в WriteFile.BUT (для вашего conveneince) Я изменил код для вас. И ошибка все еще происходит – Yakov