Программную реализацию операций обработки потоков ввода-вывода в языке C обеспечивает набор стандартных функций. Их объектный код сосредоточен в стандартной библиотеке объектных модулей системы программирования C. Программный интерфейс библиотечных функций ввода-вывода обеспечивает заголовочный файл stdio.h системы программирования C. Он декларирует прототипы всех функций ввода-вывода, содержит макроопределения для всех необходимых констант ввода-вывода и специфицирует массив структур для управления потоками.
Прототип каждой стандартной функции ввода-вывода определяет формат ее вызова, объявляя тип кода возврата и аргументов. Декларация прототипов необходима, если опции компилятора системы программирования C требуют выполнять контроль соответствия типов переменных, которые передаются в функцию, типам аргументов функции.
Макроопределения констант ввода-вывода в заголовочном файле <stdio.h> обеспечивает мобильность исходного кода программы, позволяя оперировать символическими макросами вместо конкретных значений констант, которые могут отличаться для различных реализаций системы программирования C. В частности, размер буфера потока в байтах задает макрос BUFSIZ, который имеет значение, кратное величине логического блока файловой системы, например, 512, 1024 или 4096 байт. При достижении конца потока ввода и при аварийном завершении большинство стандартных функций ввода-вывода возвращают значение, которое определяют макросы EOF и NULL. Обычно EOF обозначает отрицательное целое число (-1), а NULL нулевой указатель. Для идентификации терминальных потоков стандартного ввода, вывода и протокола диагностики используются макросы stdin, stdout и stderr. Для формального обозначения структуры управления потоком введен абстратный тип данных FILE.
Структура управления определяет базовый адрес буфера потока в сегменте данных программы, текущее смещение в буфере указателя чтения-записи, объем свободного места в буфере и номер дескриптора файла в контексте программы, который обеспечивает доступ к файловой системе для операций ввода-вывода через поток. Собственная структура управления формируется для каждого потока, который открывает программа для буферизованной обработки файлов. Адреса структур управления открытых потоков доступны в программе по указателю типа (FILE*). Число потоков, которые могут быть одновременно открыты программой, ограничено набором файловых дескрипторов в контексте программы, которые индексируют открытые потоки в массиве структур управления. По умолчанию всегда открыты стандартные потоки ввода, вывода и протокола диагностики, которые индексируют младшие номера файловых дескрипторов 0, 1 и 2. Эти потоки обеспечивают поддержку стандартного терминального интерфейса программы. Потоки для обработки файлов индексируют старшие номера файловых дескрипторов. Они назначаются автоматически, когда в программе будут открыты потоки для буферизованной обработки файлов.
Обработка потоков стандартными функциями ввода-вывода осуществляется по следующей базовой схеме. Сначала поток должен быть открыт для обработки в заданном режиме. Затем должны быть вызваны необходимые функции чтения и (или) записи данных для реализации ввода-вывода. Операции чтения и записи могут сопровождаться форматным преобразованием стандартных типов данных или выполняться без форматных преобразований. Для файловых потоков операции чтения-записи могут чередоваться с операцией позиционирования указателя потока. После завершения необходимых операций, поток должен быть закрыт для обработки.