Не выводится текст в консоль из файла 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);

Объяснение кода листинга программы

Список действий в коде, который вы предоставили, выглядит следующим образом:

  1. Открывается файл Read/WriteFile для записи с помощью функции fopen().
  2. Создается буфер с помощью функции malloc().
  3. В буфер записывается текст с помощью функции fprintf().
  4. Размер буфера сохраняется в переменной actlen.
  5. Записывается буфер в файл с помощью функции fwrite().
  6. Закрывается файл с помощью функции fclose().
  7. Освобождается буфер с помощью функции free(). В данном коде есть одна ошибка, которая может привести к некорректной работе - переменная actlen объявлена, но не инициализирована перед использованием. Это может привести к непредсказуемому поведению программы. Также стоит отметить, что в данном коде не обрабатываются возможные ошибки, которые могут возникнуть при работе с файлами или памятью. В реальном коде стоит добавить соответствующие проверки и обработку ошибок для повышения надежности программы.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

5   голосов , оценка 4 из 5
Похожие ответы