Фундаментом понимания системы ввода/вывода С (и С++) являются концепции потоков и файлов. Система ввода/вывода С поддерживает постоянный интерфейс независимо от устройства, к которому обращается программист. То есть система ввода/вывода С предоставляет уровень абстракции между программистом и аппаратурой. Данная абстракция называется потоком, а собственно устройство называется файлом. Важно знать, как они между собой взаимодействуют.