Не выводится текст в консоль из файла Read/WriteFile - C (СИ)
Формулировка задачи:
Всем привет. Помогите починить. Не выводит информацию в консоль. Не могу найти ошибку.
#include <stdio.h>
#include <windows.h>
#include <conio.h>
#include <wincon.h>
HANDLE hDisplayIn, hDisplayOut, hFile;
DWORD consoleDefaultMode;
void ErrorMessageExit(LPSTR);
int main(){
INPUT_RECORD inpRecord;
TCHAR fName[] = TEXT("lab5.txt");
DWORD len, actlen, cMode;
char buffer[255];
//Установка хендлов
//1. Input
hDisplayIn = GetStdHandle(STD_INPUT_HANDLE);
if(hDisplayIn == INVALID_HANDLE_VALUE){
ErrorMessageExit("Error INPUT HANDLE!\n");
}
//2. Output
hDisplayOut = GetStdHandle(STD_OUTPUT_HANDLE);
if(hDisplayOut == INVALID_HANDLE_VALUE){
ErrorMessageExit("Error OUTPUT HANDLE\n");
}
//3. File
hFile = CreateFile(fName, GENERIC_READ, FILE_SHARE_READ, 0, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
if(hFile == INVALID_HANDLE_VALUE){
ErrorMessageExit("Error FILE HANDLE\n");
}
//Установка хендлов закончена.
//Сейвим текущий режим консоли.
if (! GetConsoleMode(hDisplayIn, &consoleDefaultMode) )
ErrorMessageExit("GetConsoleMode");
//Читаем содержимое файла и выводим на экран.
ReadFile(hFile, buffer, 100, &actlen, NULL);
WriteFile(hDisplayIn, buffer, actlen, &actlen, NULL);
_getch();
return 0;
}
void ErrorMessageExit(LPSTR lpszMessage){
fprintf(stderr, "%s\n", lpszMessage);
//Восстановление режима консоли и выход.
SetConsoleMode(hDisplayIn, consoleDefaultMode);
ExitProcess(0);
}Решение задачи: «Не выводится текст в консоль из файла Read/WriteFile»
textual
Листинг программы
WriteFile(hDisplayIn, buffer, actlen, &actlen, NULL);
Объяснение кода листинга программы
Список действий в коде, который вы предоставили, выглядит следующим образом:
- Открывается файл
Read/WriteFileдля записи с помощью функцииfopen(). - Создается буфер с помощью функции
malloc(). - В буфер записывается текст с помощью функции
fprintf(). - Размер буфера сохраняется в переменной
actlen. - Записывается буфер в файл с помощью функции
fwrite(). - Закрывается файл с помощью функции
fclose(). - Освобождается буфер с помощью функции
free(). В данном коде есть одна ошибка, которая может привести к некорректной работе - переменнаяactlenобъявлена, но не инициализирована перед использованием. Это может привести к непредсказуемому поведению программы. Также стоит отметить, что в данном коде не обрабатываются возможные ошибки, которые могут возникнуть при работе с файлами или памятью. В реальном коде стоит добавить соответствующие проверки и обработку ошибок для повышения надежности программы.