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

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

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

Здравствуйте. По заданию программа должна открывать файл на чтение, считывать информацию и закрывать файл. Реализовать всё нужно посредством прерываний.
#include <stdio.h>
#include <dos.h>
main()
{
    unsigned des;
    char file_name[]="fil.f",
         st[]="";
    _DS=FP_SEG(file_name);
    _DX=FP_OFF(file_name);
    _AX=0x3D00;
    geninterrupt(0x21);
    des=_AX;
    _BX=des;
    _CX=5;
    _DS=FP_SEG(st);
    _DX=FP_OFF(st);
    _AX=0x3F00;
    geninterrupt(0x21);
 
    _DS=FP_SEG(st);
    _DX=FP_OFF(st);
    _AX=0x0900;
    geninterrupt(0x21);
 
    _BX=des;
    _AX=0x3E00;
    geninterrupt(0x21);
    getch();
}
В файле одно слово KATAL. Почему-то при чтении из файла в строке получается не "KATAL", а "KATAL \x2\x1", которые при выводе на экран преображаются в два смайлика. Я так понимаю, что это какие-то служебные символы. При использовании printf() они не выводятся. Но реализовать надо через прерывание. Отсюда вопрос(ы): Я неправильно считываю, и можно как-то считать без этих символов? Или я неправильно вывожу, и можно как-то вывести без этих смволов? Или проблема в файле?

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

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

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

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

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


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

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

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