Skip to content

Commit 1bfe03e

Browse files
committed
Дополнение в текст урока 3.2
1 parent 6ebaa2b commit 1bfe03e

File tree

1 file changed

+9
-6
lines changed

1 file changed

+9
-6
lines changed
Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,21 @@
11
# Как устроен ввод и вывод в языке Си. Потоки ввода и вывода
22

3-
Возвращаемся к основной теме урока -- вводу и выводу данных. Разберёмся как он устроен в Си.
3+
Разберёмся, как устроен ввод и вывод данных в языке Си.
44

5-
Помните в программе "Hello, World!" мы подключили заголовочный файл `stdio.h`, чтобы пользоваться стандартной функцией `printf()`? Так вот, кроме этой функции в файле есть множество других для ввода и вывода данных и других штук. Но нас сейчас интересуют не все эти функции, а стандартные потоки ввода и вывода, которые там тоже определены: =стандартный поток ввода= -- `stdin` и =стандартный поток вывода= -- `stdout`.
5+
Помните в программе "Hello, World!" мы подключили заголовочный файл `stdio.h`, чтобы пользоваться стандартной функцией `printf()`? Так вот, кроме этой функции файл `stdio.h` содержит множество других функций для ввода и вывода данных и прочих полезных штук. Но нас сейчас интересуют не все эти функции, а стандартные потоки ввода и вывода, которые там определены: =стандартный поток ввода= -- `stdin` и =стандартный поток вывода= -- `stdout`.
66

77
Что ещё за потоки? Чтобы лучше это понять, думайте о них, как о последовательности символов.
88
Следующая картинка иллюстрирует работу потоков:
99

10-
![Схема работы потоков ввода и вывода](./streams.png)
10+
![Схема работы потоков ввода и вывода](./streams.png "Рис.1 Схема взаимодействия программы с потоками ввода и вывода")
1111

12-
Стандартный поток ввода называется `stdin` (от standard input) и обычно связан с клавиатурой, а стандартный поток вывода `stdout` (standard output) -- с экраном терминала(консоли). Я говорю обычно, потому что есть возможность перенаправить эти потоки, т.е. сделать так, чтобы данные выводились не на экран, а в какой-нибудь файл или получать данные не с клавиатуры, а из файла.
12+
Стандартный поток ввода называется `stdin` (от standard input) и обычно связан с клавиатурой, а стандартный поток вывода `stdout` (standard output) -- с экраном терминала (консоли). Я говорю обычно, потому что есть возможность перенаправить эти потоки, т.е. сделать так, чтобы данные выводились не на экран, а в какой-нибудь файл или получать данные не с клавиатуры, а из файла.
1313

14-
По сути наша программа работает именно с этими потоками и не особо обращает внимание с чем конкретно они связаны (файл, экран терминала, клавиатура). Для неё главное понимать, что данные приходят из потока ввода, а отправлять их надо в поток вывода.
14+
Фактически наша программа работает именно с этими потоками и не особо заморачивается о том, с чем конкретно они связаны (файл, экран терминала, клавиатура). Для программы главное, что данные приходят из стандартного потока ввода, а отправлять их надо в стандартный поток вывода. Всё остальное -- забота операционной системы.
1515

1616
Т.е. когда мы в программе "Hello, World!" вызывали функцию `printf("Hello, World!\n")`, то более точно было бы сказать, что функция отправила эту строку не на экран консоли, а в стандартный поток вывода, который связан с экраном консоли и поэтому строка появлялась на экране.
1717

18-
![Пример работы потока вывода](./stdout1.png)
18+
![Пример работы потока вывода](./stdout1.png "Рис. 2 Пример работы потока вывода в программе Hello, World!")
19+
20+
**Подведём итог:**
21+
Потоки в Си -- это такая абстрактная модель для взаимодействия программ с данными. Программа не знает, откуда приходят данные (клавиатура, файл) или куда отправляются данные (экран, файл). Она просто читает данные из потока ввода (stdin) и записывает данные в поток вывода (stdout), а за взаимодействие с клавиатурой или экраном терминала отвечает операционная система.

0 commit comments

Comments
 (0)