Язык программирования C

Скачать в pdf «Язык программирования C»


#include <stdlib.h>


/* talloc:    создание узла дерева типа tnode */


struct tnode *talloc(void)

{


return (struct tnode *) malloc(sizeof(struct tnode));

}


Функция strdup просто копирует свой строковый аргумент в надежное место памяти, выделенное функцией malloc:


char *strdup(char *s)    /* создание дубликата строки s */

{


char *р;


р = (char *) malloc(strlen(s)+1);    /* +1 для ‘’ */


if (p != NULL)


strcpy(p, s); return p;

}


Функция malloc возвращает NULL, если она не может выделить участок памяти; в таком случае strdup передает это значение дальше, возлагая обработку ошибки на вызывающую функцию.


Память, выделенную вызовом malloc, можно освободить для последующего повторного использования вызовом функции free (см. подробнее главы 7 и 8).


Упражнение 6.2. Напишите программу, которая бы считывала текст программы на С и выводила в алфавитном порядке каждую группу имен переменных, которые совпадают по первым шести символам, но могут отличаться дальше. Не принимайте во внимание слова внутри строк и комментариев. Сделайте так, чтобы число 6 можно было вводить как параметр командной строки.


Упражнение 6.3. Напишите программу анализа перекрестных ссылок, которая бы выводила список всех слов документа, а для каждого слова — список номеров строк, в которых оно встречается. Удалите несущественные слова наподобие артиклей (в английском тексте), союзов, частиц и т.п.


Упражнение 6.4. Напишите программу, выводящую все различные слова из ее входного потока, отсортированные в порядке убывания частоты употребления. Перед каждым словом выведите его частоту.

б.б. Поиск по таблице


В этом разделе будет написана содержательная часть программного пакета для поиска информации в таблицах, с помощью которого мы проиллюстрируем различные аспекты работы со структурами. Этот код достаточно типичен для функций работы с таблицами символов, встречающихся в макропроцессорах и компиляторах. Для примера рассмотрим директиву #def ine:

Скачать в pdf «Язык программирования C»