Опубликован: 05.07.2006 | Доступ: свободный | Студентов: 4679 / 885 | Оценка: 4.12 / 3.74 | Длительность: 18:59:00
Лекция 8:

Ввод и вывод

< Лекция 7 || Лекция 8: 123456 || Лекция 9 >

7.9. Несколько разнообразных функций

Стандартная библиотека предоставляет множество разнообразных функций, некоторые из которых оказываются особенно полезными. Мы уже упоминали функции для работы со строками: strlen, strcpy, strcat и strcmp. Вот некоторые другие.

7.9.1. Проверка вида символов и преобразования

Некоторые макросы выполняют проверку символов и преобразования:

isalpha(c) не 0, если "c" алфавитный символ,
     0 - если нет.
isupper(c) Не 0, если "c" буква верхнего регистра,
     0 - если нет.
islower(c) Не 0, если "c" буква нижнего регистра,
     0 - если нет.
isdigit(c) Не 0, если "c" цифра,
     0 - если нет.
isspace(c) Не 0, если "c" пробел, табуляция
     или новая строка, 0 - если нет.
toupper(c) Преобразует "c" в букву верхнего регистра.
tolower(c) Преобразует "c" в букву нижнего регистра.
7.9.2. Функция UNGETC

Стандартная библиотека содержит довольно ограниченную версию функции ungetch, написанной нами в "лекции №4" ; она называется ungetc. В результате обращения

ungetc(c,fp)

символ "C" возвращается в файл fp. Позволяется возвращать в каждый файл только один символ. функция ungetc может быть использована в любой из функций ввода и с макросами типа scanf, getc или getchar.

7.9.3. Обращение к системе

функция system(s) выполняет команду, содержащуюся в символьной строке s, и затем возобновляет выполнение текущей программы. Содержимое s сильно зависит от используемой операционной системы. В качестве тривиального примера, укажем, что на системе UNIX строка

system("date");

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

7.9.4. Управление памятью

функция calloc весьма сходна с функцией alloc, использованной нами в предыдущих лекциях. В результате обращения

calloc(n, sizeof(object))

возвращается либо указатель пространства, достаточного для размещения n объектов указанного размера, либо null, если запрос не может быть удовлетворен. Отводимая память инициализируется нулевыми значениями.

указатель обладает нужным для рассматриваемых объектов выравниванием, но ему следует приписывать соответствующий тип, как в

char *calloc(); 
int *ip; 
ip=(int*) calloc(n,sizeof(int));

функция cfree(p) освобождает пространство, на которое указывает "p", причем указатель "p" первоначально должен быть получен в результате обращения к calloc. Здесь нет никаких ограничений на порядок освобождения пространства, но будет неприятнейшей ошибкой освободить что-нибудь, что не было получено обращением к calloc.

Реализация программы распределения памяти, подобной calloc, в которой размещенные блоки могут освобождаться в произвольном порядке, продемонстрирована в "лекции №8" .

< Лекция 7 || Лекция 8: 123456 || Лекция 9 >