Керниган и Ритчи - Язык программирования Си (793773), страница 4
Текст из файла (страница 4)
Нумерация строк ..................................................................................................................................... 222А 12.7. Генерация сообщения об ошибке ......................................................................................................... 222А 12.8.
Прагма ...................................................................................................................................................... 222А 12.9. Пустая директива .................................................................................................................................... 222А 12.10. Заранее определенные имена ............................................................................................................ 223А 13. Грамматика ..................................................................................................................................................... 223B.
Стандартная библиотека ........................................................................................................................................ 230В 1. Ввод-вывод: <stdio.h> ...................................................................................................................................... 230В 1.1. Операции над файлами ............................................................................................................................ 230В 1.2.
Форматный вывод ..................................................................................................................................... 232В 1.3. Форматный ввод ....................................................................................................................................... 234В 1.4. Функции ввода-вывода символов ........................................................................................................... 236В 1.5. Функции прямого ввода-вывода ............................................................................................................. 237В 1.6. Функции позиционирования файла ........................................................................................................
237В 1.7. Функции обработки ошибок .................................................................................................................... 238В 2. Проверки класса символа: <ctype.h> ............................................................................................................. 238В 3. Функции, оперирующие со строками: <string. h>.......................................................................................... 239В 4. Математические функции: <math. h> .............................................................................................................
240В 5. Функции общего назначения: <stdlib. h> ....................................................................................................... 242В 6. Диагностика: <assert. h> .................................................................................................................................. 244В 7. Списки аргументов переменной длины: <stdarg.h> ..................................................................................... 244В 8. Дальние переходы: <setjmp. h> ......................................................................................................................
245В 9. Сигналы: <signal. h> .......................................................................................................................................... 245В 10. Функции даты и времени: <time.h> .............................................................................................................. 246В 11. Зависящие от реализации пределы: <limits.h> и <float.h> .........................................................................
248C. Перечень изменений .............................................................................................................................................. 251ПредисловиеС момента публикации в 1978 г. книги "Язык программирования Си" в мире компьютеров произошлареволюция.
Большие машины стали еще больше, а возможности персональных ЭВМ теперь сопоставимы свозможностями больших машин десятилетней давности. Язык Си за это время также изменился, хотя и неочень сильно; что же касается сферы применения Си, то она далеко вышла за рамки его начальногоназначения как инструментального языка операционной системы UNIX.Рост популярности Си, накапливающиеся с годами изменения, создание компиляторов коллективамиразработчиков, ранее не причастных к проектированию языка, — все это послужило стимулом к болееточному и отвечающему времени определению языка по сравнению с первым изданием книги. В 1983 г.Американский институт национальных стандартов (American National Standards Institute — ANSI) учредилкомитет, перед которым была поставлена цель выработать "однозначное и машинно-независимоеопределение языка Си", полностью сохранив при этом его стилистику.
Результатом работы этого комитета иявился стандарт ANSI языка Си.Стандарт формализует средства языка, которые в первом издании были только намечены, но не описаны,такие, например, как присваивание структурам и перечисления. Он вводит новый вид описания функций,позволяющий проводить повсеместную проверку согласованности вызовов функций с их определением;специфицирует стандартную библиотеку с широким набором функций ввода-вывода, управления памятью,манипуляций со строками символов и другими функциями; уточняет семантику, бывшую в первоначальномопределении неясной, и явно выделяет то, что остается машинно-зависимым.Во втором издании книги "Язык программирования Си" представлена версия Си, принятая в качествестандарта ANSI.
Мы решили описать язык заново, отметив при этом те места, в которых он претерпелизменения. В большинство параграфов это не привнесло существенных перемен, самые заметные различиякасаются новой формы описания и определения функции. Следует отметить, что современные компиляторыуже обеспечили поддержку значительной части стандарта.Мы попытались сохранить краткость первого издания. Си — небольшой язык, и чтобы его описать большойкниги не требуется. В новом издании улучшено описание наиболее важных средств, таких как указатели,которые занимают центральное место в программировании на Си; доработаны старые примеры, а внекоторые главы добавлены новые.
Так, для усиления трактовки сложных объявлений в качестве примероввключены программы перевода объявлений в их словесные описания и обратно. Как и раньше, все примерыбыли протестированы прямо по текстам, написанным в воспринимаемой машиной форме.Приложение А — это справочное руководство, но отнюдь не стандарт. В нем мы попытались уложить самоесущественное на минимуме страниц. По замыслу это приложение должно легко читаться программистомпользователем; для разработчиков же компилятора определением языка должен служить сам стандарт.
Вприложении В приведены возможности стандартной библиотеки. Оно также представляет собой справочникдля прикладных программистов, но не для разработчиков компиляторов. Приложение С содержит краткийперечень отличий представленной версии языка Си от его начальной версии.В предисловии к первому изданию мы говорили о том, что "чем больше работаешь с Си, тем он становитсяудобнее". Это впечатление осталось и после десяти лет работы с ним. Мы надеемся, что данная книгапоможет вам изучить Си и успешно его использовать.Мы в большом долгу перед друзьями, которые помогали нам в выпуске второго издания книги. Джон Бентли,Дуг Гуин, Дуг Макилрой, Питер Нельсон и Роб Пайк сделали четкие замечания почти по каждой страницепервого варианта рукописи. Мы благодарны Алу Ахо, Деннису Аллиссону, Джою Кемпбеллу, Г. Р.
Эмлину,Карен Фортганг, Аллену Голубу, Эндрю Хьюму, Дэйву Кристолу, Джону Линдерману, Дэйву Проссеру, ГинуСпаффорду и Крису Ван Уику за внимательное прочтение книги. Мы получили полезные советы от БиллаЧезвика, Марка Кернигана, Эндрю Коэнига, Робина Лейка, Тома Лондона, Джима Ридза, Кловиза Тондо иПитера Вайнбергера. Дейв Проссер ответил на многочисленные вопросы, касающиеся деталей стандартаANSI. Мы широко пользовались транслятором с Си++ Бьерна Страуструпа для локальной проверки нашихпрограмм, а Дейв Кристол предоставил нам ANSI-Си-компилятор для окончательной их проверки.
РичДрешлер очень помог в наборе книги.Мы искренне благодарим всех.Брайан В. Керниган,Деннис М. РитчиПредисловие к первому изданиюСи — это универсальный язык программирования с компактным способом записи выражений, современнымимеханизмами управления структурами данных и богатым набором операторов. Си не является ни языком"очень высокого уровня", ни "большим" языком, не рассчитан он и на какую-то конкретную областьприменения.















