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