Система ввода/вывода С предназначена для работы со множеством устройств, включая терминалы дисковые накопители и так далее. Хотя каждое устройство отличается от другого, система вводу вывода преобразует их в единое логическое устройство - поток. Все потоки похожи своим поведением. Поскольку потоки не зависят от устройств, одни и те же функции могут записывать информацию в файл на диске и использоваться для записи на другое устройство, например консоль. Существует два типа потоков: текстовые и двоичные.
Текстовые потоки
Текстовые потоки - это последовательность символов. В текстовых потоках некоторые символы могут преобразовываться согласно требованиям среды. Например, символ новой строки может преобразовываться в пару «возврат каретки - перевод строки». Следовательно, может не быть однозначного соответствия между записываемыми или считываемыми символами и символами во внешнем устройстве. Также из-за возможного перевода число символов, прочитанных или записанных, может не совпадать с числом символов во внешнем устройстве.
Двоичные потоки
Двоичный поток - это последовательность байт, имеющих однозначное соответствие с байтами во внешнем устройстве. То есть, не возникает преобразование символов. Также число байт, записанных или прочитанных из внешнего устройства, совпадает с числом во внешнем устройстве. Тем не менее может добавляться некоторое количество нулевых байт к двоичному потоку. Эти нулевые байты могут использоваться для унификации представления информации, например для заполнения сектора диска.