Приглашаем посетить
Одоевский (odoevskiy.lit-info.ru)

Андрей Богатырев. Хрестоматия по программированию на Си в Unix

Андрей Богатырев.
Хрестоматия по программированию на Си в Unix

Напутствие в качестве вступления.
1. Простые программы и алгоритмы. Сюрпризы, советы.
1.11. Треугольник из звездочек.
1.34. Простые числа.
1.36. Целочисленный квадратный корень.
1.39. Вычисление интеграла по Симпсону.
1.49. Сортировка Шелла.
1.50. Быстрая сортировка.
1.67. Функция чтения строки.
1.84. Законен ли оператор f(x++, x++); или f(x, x++);
1.88. Перестановки элементов.
1.103. Параметры функции
1.117. Схема Горнера.
1.137. Системная функция qsort - формат вызова.
1.146. Процесс компиляции программ.
2. Массивы, строки, указатели.
2.22. Оператор Си, который обрубает строку s до длины n букв.
2.58. Функция bcopy.
2.59. Функция strdup.
2.61. Упрощенный аналог функции printf.
3. Мобильность и машинная зависимость программ. Проблемы с русскими буквами.
3.9. _ctype[]
3.12. Программа транслитерации: tr.
3.16. Функция записи трассировки (отладочных выдач) в файл.
3.18. Условная компиляция: #ifdef
4. Работа с файлами.
4.10. Доступ к диску
4.31. Склеивание несколько файлов в один.
4.39. Быстрый доступ к строкам файла.
4.45. Эмуляция основ библиотеки STDIO, по мотивам 4.2 BSD.
5. Структуры данных.
5.12. Отсортированный список слов.
5.16. Структуры с полями переменного размера.
5.17. Список со "старением".
6. Системные вызовы и взаимодействие с UNIX.
6.1. Файлы и каталоги.
6.1.1. Определение типа файла.
6.1.3. Выдача неотсортированного содержимого каталога (ls).
6.1.5. Рекурсивный обход каталогов и подкаталогов.
6.2. Время в UNIX.
6.2.9. Функция задержки в микросекундах.
6.3. Свободное место на диске.
6.4. Сигналы.
6.4.3. Функция sleep.
6.5. Жизнь процессов.
6.6. Трубы и FIFO-файлы.
6.7. Нелокальный переход.
6.8. Хозяин файла, процесса, и проверка привелегий.
6.9. Блокировка доступа к файлам.
6.10. Файлы устройств.
6.10.1. Определение текущего каталога: функция getwd.
6.10.2. Канонизация полного имени файла.
6.11. Мультиплексирование ввода-вывода
6.11.1. Мультиплексирование ввода из нескольких файлов.
6.11.2. Программа script.
6.12. Простой интерпретатор команд.
7. Текстовая обработка.
7.12. Программа uniq.
7.14. Расширение табуляций в пробелы, функция untab.
7.15. Функция tabify.
7.25. Поиск методом половинного деления.
7.31. Программа печати в две полосы.
7.33. Инвертирование порядка строк в файле.
7.34. Перенос неразбиваемых блоков текста.
7.36. Двоичная сортировка строк при помощи дерева.
7.41. Функция match.
7.43. Функция контекстной замены по регулярному выражению.
7.44. Алгоритм быстрого поиска подстроки в строке.
7.52. Коррекция правописания.
7.67. Калькулятор-1.
7.68. Калькулятор-2.
8. Экранные библиотеки и работа с видеопамятью.
8.1. Осыпающиеся буквы.
8.13. Использование библиотеки termcap.
8.17. Разбор ESC-последовательностей с клавиатуры.
9. Приложения.
9.1. Таблица приоритетов операций языка C++
9.2. Правила преобразований типов.
9.3. Таблица шестнадцатеричных чисел (HEX).
9.4. Таблица степеней двойки.
9.5. Двоичный код: внутреннее представление целых чисел.
10. Примеры.
Пример 1. Размен монет.
Пример 2. Подсчет букв в файле.
Пример 3. Центрирование строк.
Пример 4. Разметка текста для nroff.
Пример 5. Инвертирование порядка слов в строках.
Пример 6. Пузырьковая сортировка.
Пример 7. Хэш-таблица.
Пример 8. Простая база данных.
Пример 9. Вставка/удаление строк в файл.
Пример 10. Безопасный free, позволяющий обращения к автоматическим переменным.
Пример 11. Поимка ошибок при работе с динамической памятью.
Пример 12. Копирование/перемещение файла.
Пример 13. Обход поддерева каталогов в MS DOS при помощи chdir.
Пример 14. Работа с сигналами.
Пример 15. Управление скоростью обмена через линию.
Пример 16. Просмотр файлов в окнах.
Пример 17. Работа с иерархией окон в curses. Часть проекта uxcom.