|
1 | 1 | # Как устроен ввод и вывод в языке Си. Потоки ввода и вывода |
2 | 2 |
|
3 | | -Возвращаемся к основной теме урока – вводу и выводу данных. Разберёмся как он устроен. Когда мы подключаем к своей программе заголовочный файл `stdio.h` мы определяем для своей программы два стандартных потока: `стандартный поток ввода(stdin)` и `стандартный поток вывода(stdout)`. |
| 3 | +Возвращаемся к основной теме урока -- вводу и выводу данных. Разберёмся как он устроен в Си. |
4 | 4 |
|
5 | | -Чтобы это лучше понять, можно представлять их себе просто как последовательность символов. Следующая картинка иллюстрирует, как это работает. |
| 5 | +Помните в программе "Hello, World!" мы подключили заголовочный файл `stdio.h`, чтобы пользоваться стандартной функцией `printf()`? Так вот, кроме этой функции в файле есть множество других для ввода и вывода данных и других штук. Но нас сейчас интересуют не все эти функции, а стандартные потоки ввода и вывода, которые там тоже определены: ==стандартный поток ввода== -- `stdin` и =стандартный поток вывода= -- `stdout`. |
| 6 | + |
| 7 | +Что ещё за потоки? Чтобы лучше это понять, думайте о них, как о последовательности символов. |
| 8 | +Следующая картинка иллюстрирует работу потоков: |
6 | 9 |
|
7 | 10 |  |
8 | 11 |
|
9 | | -Стандартный поток ввода называется `stdin` и обычно связан с клавиатурой, а стандартный поток вывода `stdout` -- с экраном. Я говорю обычно, потому что имеется возможность перенаправить эти потоки, т.е. сделать так, чтобы данные выводились не на экран, а в какой-то файл или забирать данные не с клавиатуры, а из файла. |
| 12 | +Стандартный поток ввода называется `stdin` (от standard input) и обычно связан с клавиатурой, а стандартный поток вывода `stdout` (standard output) -- с экраном терминала(консоли). Я говорю обычно, потому что есть возможность перенаправить эти потоки, т.е. сделать так, чтобы данные выводились не на экран, а в какой-нибудь файл или получать данные не с клавиатуры, а из файла. |
| 13 | + |
| 14 | +По сути наша программа работает именно с этими потоками и не особо обращает внимание с чем конкретно они связаны (файл, экран терминала, клавиатура). Для неё главное понимать, что данные приходят из потока ввода, а отправлять их надо в поток вывода. |
10 | 15 |
|
11 | | -По сути наша программа работает именно с этими потоками и не особо обращает внимание с чем конкретно они связаны. Если вспомнить программу из первого урока мы по сути отправляли строку в поток вывода, которая была связана с экраном и поэтому наша надпись появлялась на мониторе. |
| 16 | +Т.е. когда мы в программе "Hello, World!" вызывали функцию `printf("Hello, World!\n")`, то более точно было бы сказать, что функция отправила эту строку не на экран консоли, а в стандартный поток вывода, который связан с экраном консоли и поэтому строка появлялась на экране. |
12 | 17 |
|
13 | | - |
| 18 | + |
0 commit comments