Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ida.final.doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
6 Mб
Скачать

Long fgetc (long handle);

Функция читает один байт из файла. При этом файл должен быть предварительно открыт вызовом fopen с правами, разрешающими чтение. Относится к функциям стандартной библиотеки Си.

При неуспешном возращении возвращает ошибку BADADDR – иначе очередной считанный символ. Если не достигнут конец файла, то указатель увеличивается на единицу.

Пример использования:

auto a,ch;

a=fopen(“readme.txt”,”rt”);

while((ch=fgetc(a))!=-1)

Message(ch);

fclose(a);

This patch allows you to permanently access the bonus track and bonus car

without winning the tournaments.

Операнд

Пояснения

handle

Дескриптор открытого с правами на чтения файла

Return

Завершение

Пояснения

Норма

Считанный символ

Ошибка

BADADDR

Long fputc (long byte,long handle);

Функция записывает один байт в файл. Файл должен быть предварительно открыт с правами на запись функцией fopen.

При неуспешной записи возвратит ошибку BADADDR, иначе ноль.

Операнд

Пояснения

byte

Записываемый символ

handle

Дескриптор открытого с правами на запись файла

Return

Завершение

Пояснения

Норма

0

Ошибка

BADADDR

Long fprintf (long handle,char format,...);

Ближайший аналог известной функции sprintf, однако, вместо буфера результат копируется в файл. Очевидно, что файл должен быть предварительно открыт с правами на запись вызовом fopen.

Например:

auto a,s0;

s0=0x123;

a=fopen(“CON”,”wt”);

fprintf(a, "%x \n",s0);

123

Управляющие символы стандартные, и частично совместимые с 'printf' и полностью совместимы со спецификаторами функции Message встроенного языка IDA.

Сф

пояснение

%d

десятичное длинное знаковое целое

Пример:

Message(“%d”,0xF);

15

%x

шестнадцатеричное длинное целое строчечными символами

Пример:

Message(“%x”,10);

a

%X

шестнадцатеричное длинное целое заглавными символами

Пример:

Message(“%X”,10);

A

%o

восьмеричное длинное знаковое целое

Пример:

Message(“%o”,11);

13

%u

десятичное длинное беззнаковое целое

Пример:

Message(“%u”,-1);

4294967295

%f

десятичное с плавающей точной

Пример:

Message(“%f”, 1000000);

1.e6

%c

символьное значение

Пример:

Message(“%c”,33);

!

%s

строковое значение

Пример:

Message(“%s”,”Hello, Word! \n”);

Hello, Word!

%e

вывод чисел в экспоненциальной форме

Пример:

Пример:

Message(“%e”, 1000000);

1.e6

%g

вывод чисел в экспоненциальной форме

ЗАМЕЧАНИЕ: В оригинале спецификатор '%g' заставляет функцию саму решать, в какой форме выводить число - с десятичной точкой или в экспоненциальной форме, из соображений здравомыслия и удобочитаемости. IDA всегда при задании этого спецификатора представляет числа в экспоненциальной форме.

вывод указателя (не поддерживается)

ЗАМЕЧАНИЕ: вместо спецификатора '%p' IDA использует '%a', преобразующее линейный адрес в строковой сегментный, и автоматически подставляет имя сегмента.

Так, например, 'Message("%a \n",0x10002)' выдаст 'seg000:2'. Обратите внимание, что таким способом нельзя узнать адрес переменной.

Пример:

auto a;

a="Hello!\n";

Message("%a \n",a);

0

Возвращается ноль, а не указатель на переменную.

%p

вывод десятичного целого всегда со знаком, не опуская плюс.

%+d

в оригинале - вывод шестнадцатеричного целого всегда со знаком, но ida воспринимает эту конструкцию точно так же как и ‘x'.

%+x

'n' длина выводимого десятичного числа, при необходимости дополняемая слева пробелами.

Например:

Message("Число-%3d \n”,1);

Число- 1

Если выводимое число не укладывается в 'n' позиций, то оно выводится целиком.

Например:

Message("Число-%3d \n”,10000);

Число-10000

%nd

'n' длина выводимого шестнадцатеричного числа, при необходимости дополняемая слева пробелами.

Например:

Message("Число-%3x \n”,1);

Число- 1

Если выводимое число не укладывается в 'n' позиций, то оно выводится целиком.

Например:

Message("Число-%3x \n”,0x1234);

Число-1234

%nd

‘n’ длина выводимого десятичного числа, при необходимости дополняемая слева незначащими нулями.

Пример:

Message("Число-%03d",1);

Число-001

Если выводимое число не укладывается в ‘n’ позиций, то оно выводится целиком.

Пример

Message("Число-%03d",1000)

Число-1000

%0nx

‘n’ длина выводимого шестнадцатеричного числа, при необходимости дополняемая слева незначащими нулями.

Пример:

Message("Число-%03x",0x1);

Число-001

Если выводимое число не укладывается в ‘n’ позиций, то оно выводится целиком.

Пример:

Message("Число-%03x",0x1234);

Число-1234

%#x

Вывод префикса ‘0x’ перед шестрадцатиричными числами

Пример:

Message(“%#x”,123);

0x123

%#o

Вывод префикса ‘0’ перед восьмеричными числами

Пример:

Message(“%#o”,1);

01

%n

Количество выведенных символов (не поддерживается)

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]