Не выводится текст в консоль из файла Read/WriteFile - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Всем привет. Помогите починить. Не выводит информацию в консоль. Не могу найти ошибку.
Листинг программы
  1. #include <stdio.h>
  2. #include <windows.h>
  3. #include <conio.h>
  4. #include <wincon.h>
  5. HANDLE hDisplayIn, hDisplayOut, hFile;
  6. DWORD consoleDefaultMode;
  7. void ErrorMessageExit(LPSTR);
  8. int main(){
  9. INPUT_RECORD inpRecord;
  10. TCHAR fName[] = TEXT("lab5.txt");
  11. DWORD len, actlen, cMode;
  12. char buffer[255];
  13. //Установка хендлов
  14. //1. Input
  15. hDisplayIn = GetStdHandle(STD_INPUT_HANDLE);
  16. if(hDisplayIn == INVALID_HANDLE_VALUE){
  17. ErrorMessageExit("Error INPUT HANDLE!\n");
  18. }
  19. //2. Output
  20. hDisplayOut = GetStdHandle(STD_OUTPUT_HANDLE);
  21. if(hDisplayOut == INVALID_HANDLE_VALUE){
  22. ErrorMessageExit("Error OUTPUT HANDLE\n");
  23. }
  24. //3. File
  25. hFile = CreateFile(fName, GENERIC_READ, FILE_SHARE_READ, 0, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
  26. if(hFile == INVALID_HANDLE_VALUE){
  27. ErrorMessageExit("Error FILE HANDLE\n");
  28. }
  29. //Установка хендлов закончена.
  30. //Сейвим текущий режим консоли.
  31. if (! GetConsoleMode(hDisplayIn, &consoleDefaultMode) )
  32. ErrorMessageExit("GetConsoleMode");
  33. //Читаем содержимое файла и выводим на экран.
  34. ReadFile(hFile, buffer, 100, &actlen, NULL);
  35. WriteFile(hDisplayIn, buffer, actlen, &actlen, NULL);
  36. _getch();
  37. return 0;
  38. }
  39. void ErrorMessageExit(LPSTR lpszMessage){
  40. fprintf(stderr, "%s\n", lpszMessage);
  41. //Восстановление режима консоли и выход.
  42. SetConsoleMode(hDisplayIn, consoleDefaultMode);
  43. ExitProcess(0);
  44. }

Решение задачи: «Не выводится текст в консоль из файла Read/WriteFile»

textual
Листинг программы
  1. 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

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы