
- •1. Информатика как наука.
- •2. Информация в материальном мире. Свойства информации.
- •3. Представление информации в эвм.
- •4. Системы счисления. Перевод чисел в различные системы счисления.
- •6. Представление целых положительных и отрицательных чисел
- •7. Истории развития вычислительной техники
- •8. Обшая структура и принцип работы эвм
- •9. Классификация эвм
- •10. Микропроцессор. Принцип работы.
- •11. Память. Виды памяти.
- •12. Устройства ввода-вывода данных.
- •13. Операционные системы. Общие понятия.
- •14. Классификация операционных систем.
- •15. Основы работы с операционной системой Windows.
- •16. Работа с файлами и папками в os Windows. Общие положения.
- •17. Операционная система Unix. Общие понятия.
- •Часть 1 Работа в среде
- •18. Текстовый редактор Word. Набор, редактирование и форматирование текста
- •19. Возможности и технология работы в табличном процессоре мs Ехсеl.
- •20. Виды информационно-вычислительных сетей.
- •21. Техническое обеспечение информационно-вычислительных сетей.
- •22. Интернет: теоретические основы.
- •23. Принципы работы службы www
- •24. Принципы работы службы dns.
- •25. Принципы работы службы fтр.
- •26. Принципы работы службы e-mail
- •27. Языки программирования.
- •28. Компилятор и интерпретатор.
- •29. Этапы создания программы на языке с.
- •30. Структура программы на языке с.
- •Дополнительный пример
- •31. Среда программирования и алгоритмы.
- •32. Создание блок-схемы алгоритма решения задачи.
- •34. Целочисленные типы данных языка с.
- •35. Вещественные типы данных языка с.
- •36. Математические функции
- •37. Ввод/Вывод в с. Стандартные потоки
- •38. Использование функции scanf(). Спецификаторы преобразования. Модификаторы.
- •39. Использование функции printf(). Спецификаторы преобразования. Модификаторы.
- •40. Печать с заданием ширины поля и точности представления.
- •41. Сокращенный оператор ветвления if... Составной оператор.
- •42. Полный оператор ветвления if... Else. Составной оператор.
- •43. Оператор выбора switch() Оператор bгеак.
- •44. Бинарные логические операции. Операции сдвига.
- •45. Бинарные логические операции. Применение, масок. Включение и отключение битов.
- •46. Операторы цикла while … Операторы break, continue.
- •47. Операторы цикла for … Операторы break, continue.
- •48. Операторы цикла do … while Операторы break, continue
- •49. Вложенные циклы.
- •50. Одномерные массивы. Объявление. Инициализация.
- •51. Ввод-вывод одномерных массивов.
- •52. Поиск наибольшего и наименьшего значения массива и их индексов в одномерном массиве.
- •53. Двумерные массивы. Объявление. Инициализация.
- •54. Ввод-вывод двумерных массивов.
- •60. Односимвольные функции ввода/вывода: getchar() и putchar(). Перенаправление ввода/вывода.
- •61. Символы. Библиотека символьных функций и ctype.H.
- •62. Строки. Предоставление строки в памяти.
- •63. Ввод-вывод строк с использованием функций puts(), fputs(), printf(), gets(), fgets(), scanf().
- •64. Обработка строк. Библиотека строковых функций string.H.
37. Ввод/Вывод в с. Стандартные потоки
Как уже говорилось в главе 1, библиотечные функции реализуют простую модель текстового ввода-вывода. Текстовый поток состоит из последовательности строк; каждая строка заканчивается символом новой строки. Если система в чем-то не следует принятой модели, библиотека сделает так, чтобы казалось, что эта модель удовлетворяется полностью. Например, пара символов - возврат-каретки и перевод-строки - при вводе могла бы быть преобразована в один символ новой строки, а при выводе выполнялось бы обратное преобразование.
Простейший механизм ввода - это чтение одного символа из стандартного ввода (обычно с клавиатуры) функцией getchar:
int getchar(void)
В качестве результата каждого своего вызова функция getchar возвращает следующий символ ввода или, если обнаружен конец файла, EOF. Именованная константа EOF (аббревиатура от end of file - конец файла) определена в <stdio.h>. Обычно значение EOF равно -1, но, чтобы не зависеть от конкретного значения этой константы, обращаться к ней следует по имени (EOF).
Во многих системах клавиатуру можно заменить файлом, перенаправив ввод с помощью значка <. Так, если программа prog использует getchar, то командная строка
prog < infile
предпишет программе prog читать символы из infile, а не с клавиатуры. Переключение ввода делается так, что сама программа prog не замечает подмены; в частности строка "< infile" не будет включена в аргументы командной строки argv. Переключение ввода будет также незаметным, если ввод исходит от другой программы и передается конвейерным образом. В некоторых системах командная строка
otherprog | prog
приведет к тому, что запустится две программы, otherprog и prog, и стандартный выход otherprog поступит на стандартный вход prog. Функция
int putchar(int)
используется для вывода: putchar(c) отправляет символ c в стандартный вывод, под которым по умолчанию подразумевается экран. Функция putchar в качестве результата возвращает посланный символ или, в случае ошибки, EOF. То же и в отношении вывода: с помощью записи вида > имя-файла вывод можно перенаправить в файл. Например, если prog использует для вывода функцию putchar, то
prog > outfile
будет направлять стандартный вывод не на экран, а в outfile. А командная строка
prog | anotherprog
соединит стандартный вывод программы prog со стандартным вводом программы anotherprog.
Вывод, осуществляемый функцией printf, также отправляется в стандартный выходной поток. Вызовы putchar и printf могут как угодно чередоваться, при этом вывод будет формироваться в той последовательности, в которой происходили вызовы этих функций.
Любой исходный Си-файл, использующий хотя бы одну функцию библиотеки ввода-вывода, должен содержать в себе строку
#include <stdio.h>
причем она должна быть расположена до первого обращения к вводу-выводу. Если имя заголовочного файла заключено в угловые скобки < и >, это значит, что поиск заголовочного файла ведется в стандартном месте (например в системе UNIX это обычно директорий /usr/include).
Многие программы читают только из одного входного потока и пишут только в один выходной поток. Для организации ввода-вывода таким программам вполне хватит функций getchar, putchar и printf, а для начального обучения уж точно достаточно ознакомления с этими функциями. В частности, перечисленных функций достаточно, когда требуется вывод одной программы соединить с вводом следующей. В качестве примера рассмотрим программу lower, переводящую свой ввод на нижний регистр:
#include <stdio.h>
#include <ctype.h>
main() /* lower: переводит ввод на нижний регистр */
{
int с;
while ((с = getchar()) != EOF)
putchar(tolower(c));
return 0;
}