В языке С не определено никаких ключевых слов, с помощью которых можно выполнять ввод/вывод. Вместо них используются библиотечные функции. Система ввода/вывода языка С — это элегантная конструкция, которая обеспечивает гибкий и в то же время слаженный механизм передачи данных от одного устройства к другому. Впрочем, эта система достаточно большая и состоит из нескольких различных функций. Заголовочным файлом для функций ввода/вывода является <stdio.h>.
Имеются как консольные, так и файловые[1] функции ввода/вывода. С практической точки зрения консольный и файловый ввод/вывод отличаются друг от друга очень мало. Однако теоретически они находятся в двух очень «разных мирах». В этой главе подробно рассказывается о функциях ввода/вывода на консоль. В следующей же главе представлена система файлового ввода/вывода, а также говорится, что имеется общего между этими двумя системами.
За одним исключением, в этой главе рассказывается только о функциях ввода/вывода на консоль, которые определяются стандартом языка С. В стандарте языка С не определены никакие функции, предназначенные для выполнения различных операций управления экраном (например, позиционирования курсора) или вывода на него графики. И не определены потому, что эти операции на разных машинах очень сильно отличаются. Кроме того, в стандартном С не определены никакие функции, которые выполняют операции вывода в обычном или диалоговом окне, создаваемом в среде Windows. Функции ввода/вывода на консоль выполняют всего лишь телетайпный вывод. Однако в библиотеках большинства компиляторов имеются функции графики и управления экраном, предназначенные для той среды, в которой как раз и должны выполняться программы. И, конечно же, на языке С можно писать Windows-программы. Просто в С не определены функции, которые выполняли бы эти задачи напрямую.
В этой главе консольными функциями ввода/вывода называются те, которые выполняют ввод с клавиатуры и вывод на экран. В действительности же эти функции работают со стандартным потоком ввода и стандартным потоком вывода[2]. Более того, стандартный ввод[3] и стандартный вывод[4] могут быть перенаправлены на другие устройства. Таким образом, «консольные функции» не обязательно должны работать только с консолью. Перенаправление ввода/вывода описано в главе 9. В данной же главе предполагается, что ни стандартный ввод, ни стандартный вывод на другие устройства не перенаправляются.
На заметку | В языке C++ ввод/вывод выполняют не только функции, но имеются еще и операторы (знаки операций) ввода/вывода. Впрочем, в языке С эти операторы ввода/вывода не поддерживаются. |
[1]Ввод/вывод в файл и файловый ввод/вывод — синонимы.
[2]Иногда говорят, что ввод происходит со стандартного устройства ввода, а вывод — на стандартное устройство вывода.
[3]Стандартный ввод — логический файл для ввода данных, связываемый с физическим файлом или стандартным выводом другой программы при запуске. По умолчанию стандартный ввод в пакетном режиме связывается со входным потоком, а в диалоговом режиме — с терминалом.
[4]Стандартный вывод — логический файл вывода данных, связываемый с физическим файлом или стандартным вводом другой программы при запуске. По умолчанию стандартный вывод в пакетном режиме связывается с выходным потоком, а в диалоговом режиме — с терминалом.