Ввод/вывод в C: стандартные функции, потоки байтов, работа с файлами. Низкоуровневый подход, унаследованный от Unix. Отсутствие прямой поддержки случайного доступа.
Сравнивайте с английским: нажмите на абзац — оригинал откроется в окне. Кнопка EN под абзацем показывает его прямо в тексте.
Содержание
Введение
Функциональность ввода/вывода в языке программирования C
Input/output functionality in the C programming language
Язык программирования C предоставляет множество стандартных функций библиотеки для ввода и вывода файлов. Эти функции составляют основную часть заголовочного файла стандартной библиотеки C. Эта функциональность берет начало из "портативного пакета ввода-вывода", разработанного Майком Леском в Bell Labs в начале 1970-х годов и официально ставшего частью операционной системы Unix в версии 7. Функциональность ввода/вывода в C достаточно низкоуровневая по современным меркам; C абстрагирует все файловые операции в операции над потоками байтов, которые могут быть "входными потоками" или "выходными потоками". В отличие от некоторых более ранних языков программирования, C не имеет прямой поддержки файлов с произвольным доступом; для чтения записи из середины файла программисту необходимо создать поток, перейти в середину файла и затем последовательно считывать байты из этого потока. Модель файлового ввода-вывода, основанная на потоках, получила распространение благодаря Unix, который разрабатывался параллельно с самим языком программирования C. Подавляющее большинство современных операционных систем унаследовали потоки от Unix, а многие языки семейства языков программирования C унаследовали интерфейс файлового ввода-вывода C с незначительными изменениями (например, PHP).
The C programming language provides many standard library functions for file input and output. These functions make up the bulk of the C standard library header The functionality descends from a "portable I/O package" written by Mike Lesk at Bell Labs in the early 1970s, and officially became part of the Unix operating system in Version 7. The I/O functionality of C is fairly low level by modern standards; C abstracts all file operations into operations on streams of bytes, which may be "input streams" or "output streams". Unlike some earlier programming languages, C has no direct support for random access data files; to read from a record in the middle of a file, the programmer must create a stream, seek to the middle of the file, and then read bytes in sequence from the stream. The stream model of file I/O was popularized by Unix, which was developed concurrently with the C programming language itself. The vast majority of modern operating systems have inherited streams from Unix, and many languages in the C programming language family have inherited C's file I/O interface with few if any changes (for example, PHP).
Обзор
Эта библиотека использует так называемые потоки для работы с физическими устройствами, такими как клавиатуры, принтеры, терминалы, или с любыми другими типами файлов, поддерживаемыми системой. Потоки — это абстракция, обеспечивающая единообразное взаимодействие с ними. Все потоки обладают схожими свойствами, независимо от специфических характеристик физических носителей, с которыми они связаны.
This library uses what are called streams to operate with physical devices such as keyboards, printers, terminals or with any other type of files supported by the system. Streams are an abstraction to interact with these in a uniform way. All streams have similar properties independent of the individual characteristics of the physical media they are associated with.
Расширения
Стандарт POSIX определяет несколько расширений в своих базовых определениях, среди которых функция выделения памяти, функции, устанавливающие связь между объектами и файловыми дескрипторами, и группа функций для создания объектов, ссылающихся на буферы в памяти.
The POSIX standard defines several extensions to in its Base Definitions, among which are a function that allocates memory, the and functions that establish the link between objects and file descriptors, and a group of functions for creating objects that refer to in memory buffers.
Альтернативы студии
Разработано несколько альтернатив. Среди них библиотека C++, являющаяся частью стандарта ISO C++. ISO C++ по-прежнему требует реализации данной функциональности. Другие альтернативы включают библиотеку Sfio (A Safe/Fast I/O Library) от AT&T Bell Laboratories. Эта библиотека, представленная в 1991 году, была разработана для устранения несогласованностей, небезопасных практик и неэффективности в дизайне ввода-вывода. Одной из её особенностей является возможность встраивания функций обратного вызова в поток для настройки обработки данных, читаемых из или записываемых в поток. Библиотека была опубликована в 1997 году, а последний релиз состоялся 1 февраля 2005 года.
Several alternatives to have been developed. Among these is the C++ library, part of the ISO C++ standard. ISO C++ still requires the functionality. Other alternatives include the Sfio (A Safe/Fast I/O Library) library from AT&T Bell Laboratories. This library, introduced in 1991, aimed to avoid inconsistencies, unsafe practices and inefficiencies in the design of Among its features is the possibility to insert callback functions into a stream to customize the handling of data read from or written to the stream. It was released to the outside world in 1997, and the last release was 1 February 2005.