ТОР 5 статей: Методические подходы к анализу финансового состояния предприятия Проблема периодизации русской литературы ХХ века. Краткая характеристика второй половины ХХ века Характеристика шлифовальных кругов и ее маркировка Служебные части речи. Предлог. Союз. Частицы КАТЕГОРИИ:
|
Fseek(указатель на файл, позиция, параметр)где позиция – количество байтов (символов), отстоящих от заданного места, параметрSEEK_SET – начало файла, SEEK_CUR – текущая позиция файла, SEEK_END – конец файла. Пример 1: прочитать символ из бинарного файла, отстоящий от начала файла на 9 байтов: f_bin=fopen("D:/User/my_file.dat", "rb"); Fseek(f_bin, 9, SEEK_SET); fscanf(f_bin, "%c", &d); printf("%c", d); На экран будет выведено: * Пример 2: прочитать символ из бинарного файла, отстоящий от конца файла на 6 байтов: f_bin=fopen("D:/User/my_file.dat", "rb"); Fseek(f_bin, -6, SEEK_END); fscanf(f_bin, "%c", &d); printf("%c", d); На экран будет выведено: + б) определение номера текущей позиции, занимаемой указателем файла (нумерация позиций начинается с нуля) fgetpos(указатель на файл, fpos_t *pos) где pos – текущая позиция указателя файла – переменная типа fpos_t (определен в stdio.h). Пример: определить номера позиций начального и конечного символов файла: fpos_t *nomer; f_bin=fopen("D:/User/my_file.dat", "rb"); fgetpos(f_bin, &nomer); // номер начального символа printf("\n nomer=%d", nomer); while (!feof(f_bin)) // читаем файл до конца { fscanf(f_bin, "%c", &d); } fgetpos(f_bin, &nomer); // номер конечного символа printf("\n nomer=%d", nomer); На экран будет выведено: nomer=0 nomer=15 Функции В алгоритмах часто встречаются блоки, в которых процесс вычисления носит одинаковый характер, но требует использования различных исходных данных. Для каждого из таких повторяющихся блоков может быть составлена отдельная программа, причем таким образом, чтобы к ней можно было бы обратиться из любого места основной программы и после ее выполнения вернуться обратно в то же место, откуда к ней обратились. Такая отдельная программа, к которой можно обратиться из другой программы, называется подпрограммой. Подпрограмма, произведя вычисления при заданных (входных) значениях аргументов, обеспечивает возврат в вызвавшую ее программу, причем в то же самое место, откуда она была вызвана. Разбиение большой программы на несколько мелких подпрограмм облегчает процесс программирования: маленькие подпрограммы легко читаются и понимаются, поэтому облегчается их отладка и тестирование. После того как подпрограмма написана и отлажена, можно забыть, как она сделана. Достаточно знать, какие входные аргументы необходимы для ее работы и что она дает на выходе. Таким образом, подпрограмма представляет собой самостоятельную программу, имеющую входные и выходные аргументы (параметры), которая может быть написана и отлажена отдельно от других программ, а затем использована в них. Примерами подпрограмм являются программы вычисления отдельных функций, имеющихся в библиотеках языков программирования, – стандартных функций, а также функций ввода-вывода. Эти подпрограммы размещены в системной библиотеке языка, подключаемой к программе пользователя при ее обработке. Значит, используя в своей программе, например, функцию printf, мы обращаемся к стандартной библиотеке ввода-вывода stdio.h, подсоединяемой к нашей программе директивой препроцессора #include <stdio.h>. В дальнейшем мы будем рассматривать не стандартные подпрограммы, входящие в системные библиотеки, а подпрограммы, которые создает сам программист В отличие от Паскаля в языке Си используется только один вид подпрограмм – функции. Вообще любая программа на Си представляет собой совокупность взаимосвязанных функций, одна из которых является основной (головной) – main. С нее и начинается выполнение программы. Функция – это подпрограмма, состоящая из заголовка, описания локальных (внутренних) переменных и блока (операторов, реализующих алгоритм вычислений). Она предназначена для вычисления единственного значения, зависящего от нескольких аргументов (формальных параметров). Один из недостатков Паскаля заключался в том, что описание используемой функции нужно было помещать внутрь вызывающей ее программы, в раздел описания процедур и функций. В языке Си описание функций помещается отдельно от вызывающих программ, а перед заголовком main() основной программы помещаются прототипы (объявления) этих функций: Не нашли, что искали? Воспользуйтесь поиском:
|