Прерывание 21h - при чтении из файла выводятся лишние символы - C (СИ)

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

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

Здравствуйте. По заданию программа должна открывать файл на чтение, считывать информацию и закрывать файл. Реализовать всё нужно посредством прерываний.
Листинг программы
  1. #include <stdio.h>
  2. #include <dos.h>
  3. main()
  4. {
  5. unsigned des;
  6. char file_name[]="fil.f",
  7. st[]="";
  8. _DS=FP_SEG(file_name);
  9. _DX=FP_OFF(file_name);
  10. _AX=0x3D00;
  11. geninterrupt(0x21);
  12. des=_AX;
  13. _BX=des;
  14. _CX=5;
  15. _DS=FP_SEG(st);
  16. _DX=FP_OFF(st);
  17. _AX=0x3F00;
  18. geninterrupt(0x21);
  19. _DS=FP_SEG(st);
  20. _DX=FP_OFF(st);
  21. _AX=0x0900;
  22. geninterrupt(0x21);
  23. _BX=des;
  24. _AX=0x3E00;
  25. geninterrupt(0x21);
  26. getch();
  27. }
В файле одно слово KATAL. Почему-то при чтении из файла в строке получается не "KATAL", а "KATAL \x2\x1", которые при выводе на экран преображаются в два смайлика. Я так понимаю, что это какие-то служебные символы. При использовании printf() они не выводятся. Но реализовать надо через прерывание. Отсюда вопрос(ы): Я неправильно считываю, и можно как-то считать без этих символов? Или я неправильно вывожу, и можно как-то вывести без этих смволов? Или проблема в файле?

Решение задачи: «Прерывание 21h - при чтении из файла выводятся лишние символы»

textual
Листинг программы
  1. char file_name[]="fil.f",
  2.          st[]="";

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

  1. Объявляется массив file_name типа char с именем fil.f
  2. Объявляется массив st типа char с пустой строкой ``

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


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

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

14   голосов , оценка 4.071 из 5

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

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

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