Не выводится текст в консоль из файла 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
объявлена, но не инициализирована перед использованием. Это может привести к непредсказуемому поведению программы. Также стоит отметить, что в данном коде не обрабатываются возможные ошибки, которые могут возникнуть при работе с файлами или памятью. В реальном коде стоит добавить соответствующие проверки и обработку ошибок для повышения надежности программы.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д