[править] Программы фильтры
В UNIX/Linux существует целый класс команд, которые
принимают данные со стандартного потока ввода,
каким-то образом обрабатывают их,
и выдают результат на стандартный поток вывода.
Такие программы называются программами-фильтрами.
Как правило, все эти программы работают как фильтры,
если у них нет аргументов (опции могут быть),
но как только им в качестве аргумента передаётся файл,
они считывают данные из этого файла, а не со стандартного потока ввода
(существуют и исключения, например, программа tr, которая обрабатывает данные
поступающие исключительно через стандартный поток ввода).
- cat
- Считывает данные со стандартного потока ввода и передаёт их на стандартный поток вывода. Без опций работает как простой повторитель. С опциями может фильтровать пустые строки, нумеровать строки и делать другую подобную работу.
- head
- Показывает первые 10 строк (или другое заданное количество), считанных со стандартного потока ввода.
- tail
- Показывает последние 10 строк (или другое заданное количество), считанные со стандартного потока ввода. Важный частный случай tail -f, который в режиме слежения показывает концовку файла. Это используется, в частности, для просмотра файлов журнальных сообщений.
- cut
- Вырезает столбец (по символам или полям) из потока ввода и передаёт на поток вывода. В качестве разделителей полей могут использоваться любые символы.
- sort
- Отсортировать данные в соответствии с какими-либо критериями, например, арифметически по второму столбцу.
- uniq
- Удалить повторяющиеся строки. Или (с ключом -с) не просто удалить, а написать сколько таких строк было. Учитываются только подряд идущие одинаковые строки, поэтому часто данные сортируются перед тем как отправить их на вход программе.
- tee
- Ответвить данные в файл. Используется для сохранения промежуточных данных, передающихся в потоке, в файл.
- bc
- Вычислить каждую отдельную строку потока и записать вместо неё результат вычисления.
- hexdump
- Показать шестнадцатеричное представление данных, поступающих на стандартный поток ввода.
- strings
- вычленить и показать в стандартном потоке (или файле) то, что напоминает строки. Всё что не похоже на строковые последовательности, игнорировать. Полезна в сочетании с grep для поиска интересующих строковых последовательностей в бинарных файлах.
- grep
- Отфильтровать поток, и показать только строки, содержащие (или не содержащие) заданное регулярное выражение.
- tr
- Посимвольная замена текста в потоке. Например, tr A-Z a-z меняет регистр символов с большого на маленький.
- sed
- Обработать текст в соответствии с заданным скриптом. Наиболее часто используется для замены текста в потоке: sed s/было/стало/g
- awk
- Обработать текст в соответствии с заданным скриптом. Как правило, используется для обработки текстовых таблиц, например таких как вывод ps aux и тому подобных, но не только.
- perl
- Обработать текст в соответствии с заданным скриптом. Возможности языка Perl выходят далеко за рамки однострочников для командной строки, но с однострочниками он справляется особенно виртуозно. В Perl существует оператор <> (diamond operator) и конструкция while(<>) { … }, которая предполагает обработку данных со стандартного потока ввода (или из файлов, если они переданы в качестве аргументов). При написании однострочников можно использовать ключи -n (равносильный оборачиванию кода в while(<>) { … }) или -p (равносильный while(<>) { … }).
- sh -s
- Текст, который передаётся на стандартный поток ввода sh -s может интерпретироваться как последовательность команд shell. На выход передаётся результат их исполнения.
- ssh
- Средство удалённого доступа ssh, может работать как фильтр. ssh подхватывает данные, переданные ему на стандартный поток ввода, передаёт их на удалённых хост и подаёт на вход процессу программы, имя которой было передано ему в качестве аргумента. Результат выполнения программы (то есть то, что она выдала на стандартный поток вывода) передаётся со стандартного вывода ssh.
Особенности языков программирования
У каждого конкретного языка программирования есть свои особенности, о которых полезно знать. Далее рассмотрены отдельные особенности написания решений на разных языках программирования:
- C++;
- Java;
- C#;
- Python.
Выбор языка программирования
Разные задачи можно решать на разных языках. Часто для конкретной задачи тот или иной язык оказывается предпочтительным. Например, если в задаче требуются тяжёлые вычисления, то её может быть проще сдать на C++, чем на Java, за счёт более быстрой работы программы на C++ (для кода на Java могут потребоваться более изощрённые оптимизации, чтобы он прошёл по времени). С другой стороны, если задача требует проведения вычислений с большими целыми числами, выходящими за пределы диапазона 64-битных переменных, то есть «длинной арифметики», то решение существенно проще написать на Java, воспользовавшись готовым качественно написанным классом для операций с числами произвольной длины.
Термины: неблокирующий, асинхронный, событийный
- “Асинхронный” буквально означает “не синхронный”. Например, отправка email асинхронная, потому что отправитель не ожидает получить ответ сразу же. В программировании “асинхронным” называют код, в котором компоненты посылают друг другу сообщения, не ожидая немедленного ответа.
- “Неблокирующий” — термин, чаще всего касающийся ввода-вывода. Он означает, что при вызове “неблокирующего” системного API управление сразу же будет возвращено программе, и она продолжит использовать свой квант процессорного времени. Обычные, простые в использовании системные вызовы блокирующие: они усыпляют вызывающий поток до тех пор, пока данные для ответа не будут готовы.
- “Событийный” означает, что компонент программы обрабатывает очередь событий с помощью цикла, а тем временем кто-либо добавляет события в очередь, формируя входные данные компонента, и забирает у него выходные данные.
Термины часто пересекаются. Например, протокол HTTP сам по себе синхронный (пакеты отправляются синхронно), но при наличии неблокирующего ввода-вывода программа, работающая с HTTP, может оставаться асинхронной, то есть успевать совершить какую-либо полезную работу между отправкой HTTP-запроса и получением ответа на него.
Популярные вопросы и ответы про оплату
Может ли пройти онлайн-оплата, если вы указали неверный cvv/cvc, но в системе 3d- secure ввели верный код из SMS?
Это вопрос из IT диктанта. Ответ на него ДА, может.
Код cvv/cvc известен только банку, который выпустил карту. И именно банк решает, пропустить транзакцию или нет. Данный код может и не передаваться при оплате, хотя и его нужно будет вводить при оплате. Авторизировать операцию возможно и без данного кода. Т.е. пройдет эта операция или нет — решает банк.
Пройдет ли оплата картой, если неверно ввести ФИО плательщика
ФИО плательщика практически не влияет на успешность оплаты. Можно ввести любое имя, хоть «Котик Вася» и при верном вводе других реквизитов карты оплата пройдет.
Общий принцип
В систему посылаются только файлы с исходным кодом, а сама посылаемая программа должна состоять только из одного файла: , , , и т. д. Нельзя отправить в систему скомпилированный exe-файл, файл проекта Visual Studio и т. п.
В решениях запрещается:
- осуществлять доступ к сети;
- выполнять любые операции ввода/вывода, кроме открывания, закрывания, чтения и записи стандартных потоков stdin, stdout, stderr и файлов с именами, явно прописанными в условии задачи;
- сознательно «ломать» тестирующую систему;
- выполнять другие программы и порождать новые процессы;
- изменять права доступа к файловой системе;
- работать с поддиректориями;
- создавать и манипулировать ресурсами GUI (окна, диалоговые сообщения и т. д.);
- работать со внешними устройствами (звук, принтер и т. д.);
- выполнять прочие действия, призванные нарушить ход учебного процесса.
Решения выполняются в специальном окружении, обеспечивающем безопасный запуск, и попытка выполнить какие-либо из указанных действий закончится, скорее всего, получением вердикта «Ошибка во время выполнения».
Почему важно знать причины неоплаты?
Оплата банковской картой через интернет — эту услугу сейчас предлагает практически любой интернет магазин. Вы можете например купить билет на поезд, оплатив банковской картой, сделать покупку на ozon.ru, купить ЖД билет онлайн.
Я всегда заказывал и оплачивал билеты банковской картой через интернет(я использую только дебетовые карты, у меня нет кредитной карты). Самое интересное, что и эта услуга иногда дает сбой — зависают деньги на карте, не проходит оплата.
Но у меня был случай, когда оплата просто не проходила. Робокасса писала сообщение — оплата отменена. Я не знал, в чем причина. В личном кабинете найти ошибку мне не удалось.
Существует множество разных причин ошибок — они бывают по причине банка или владельца карты
Важно хотя бы предполагать причину ошибки, чтоб понимать как действовать дальше? К примеру, если не удается оплатить горячий билет, то нужно понимать в чем причина и попытаться исправить проблему. Иначе билет может быть куплен другим человеком
3 полезных совета при оплате картой через Интернет
Во первых — заведите себе специальную карту. Не используйте для оплаты зарплатную карту, на которой у вас все деньги. Оптимально — кредитная карта. Она позволяет в отдельных случаях вернуть часть суммы покупки(CashBack). Обычно это сумма до 5 процентов от покупки. Будьте внимательны, некоторые сервисы при оплате катой берут комиссии. И конечно же адрес страницы оплаты всегда должен начинаться с https и рядом с адресом должен стоять значок в виде замка(Соединение https).
Во вторых — не держите много денег на карте. На карте должно быть немногим больше суммы, необходимой вам для покупки. Примерно плюс 10% от общей стоимости покупки. Логика проста — с нулевой карты ничего не могут снять.
Делаете покупку — просто пополняете карту в интернет банке и получаете нужную сумму.
Проблема при регистрации токена — как решить?
Проблема при регистрации токена — частая ошибка, которая проявляется на сайте РЖД при оплате билетов.
Токен — это уникальный идентификатор(стока типа 23hjsdfjsdhfjhj2323dfgg), которая формируется когда вы заказываете билет. Это как бы ваша сессия оплаты. Ошибка возникает на стороне сервера оплаты.
Решений может быть два
- Проблемы на сервере РЖД. Сервер оплаты очень занят и перегружен из-за числа заказов. Возможно на нем ошибка. Рекомендуем в этом случае попробывать повторить оплату позднее
- Токен Истек. Это вина того, кто платит. Рассмотрим ситуацию: если вы оформили билет, а потом отошли от компьютера на полчаса, а потом вернулись и нажали оплатить. Ваш заказ аннулирован, т.к. вы не оплатили вовремя. При оплате вы получите ошибку. Нужно заново купить билет и оплатить его в течение 10 минут.
Неудачное обновление ОС
Согласно отзывам пользователей в Интернете, проблема ввода-вывода может возникать после очередного обновления Windows, однако не совсем удачного.
Чтобы исправить ситуацию нужно:
- Перейти в «Панель управления/Программы и компоненты» и найти раздел с обновлениями Windows.
- После этого заходим в «Установленные обновления».
- Просматриваем открывшийся список и удаляем последние.
- Перезагружаем компьютер, после чего ошибка исчезнет.
Кроме этого, можно сделать восстановление системы или так называемый «откат» к прежней точке:
- Для этого нужно зайти в раздел «Панель управления», затем в «Восстановление».
- Нажать на кнопку «Восстановить системные параметры…» и запустить процесс.
- В появившемся окне жмем «Далее».
- Затем выбираем контрольную точку и жмем «Далее».
- Нажимаем кнопку «Готово» для запуска процесса.
Если ничего из этого не помогло, и ошибка ввода вывода осталась, переходим к следующему пункту.
Сопоставление кодов ошибок с исключениями
Так как файловая система представляет собой ресурс операционной системы, методы ввода-вывода в .NET Core и .NET Framework служат оболочками для соответствующих вызовов операционной системы. Если в коде, выполняемом операционной системой, возникает ошибка ввода-вывода, операционная система возвращает сведения об ошибке в метод ввода-вывода .NET. Затем этот метод преобразует сведения об ошибке, обычно представленные кодом ошибки, в соответствующий тип исключения .NET. В большинстве случаев код ошибки напрямую определяет нужный тип исключения. Метод не выполняет никакой дополнительной обработки в соответствии с контекстом вызова метода.
Например, при вызове метода в операционной системе Windows код ошибки (или 0x02) преобразуется в исключение FileNotFoundException, а код ошибки (или 0x03) — в DirectoryNotFoundException.
К сожалению, точные условия возникновения определенных кодов ошибок в операционной системе часто не документируются или документируются в недостаточном объеме. Это означает, что возможны непредвиденные исключения. Например, при работе с каталогом логично ожидать, что передача недопустимого пути в конструктор DirectoryInfo приведет к созданию исключения DirectoryNotFoundException. Но в этой ситуации может создаваться и FileNotFoundException.
Почему появляется сбой ввода-вывода и как его устранить
Если это сообщение появляется, это проблема с оборудованием или программным обеспечением. Если с аппаратной причиной все предельно ясно (вышли из строя ячейки памяти), то с программными проблемами все не так просто. Поэтому, прежде чем приступить к любому из способов устранения неполадок, вам следует проверить флешку одним из методов, предложенных в этой статье. Затем, в зависимости от полученных результатов, выберите подходящее решение.
Способ 1: Форматирование в другую файловую систему (потеря данных)
Одной из наиболее частых причин проблем с вводом-выводом на USB-накопителе является ошибка файловой системы. Это происходит по разным причинам: плохое извлечение, вирусная активность, ошибки операционной системы и т.д. Простейшее решение проблемы этого типа — форматирование носителя, желательно в другой файловой системе.
Подключите USB-накопитель к компьютеру и подождите, пока он не распознается системой. Проверьте файловую систему, которая в настоящее время используется флешкой: откройте «Компьютер», найдите диск внутри него и щелкните по нему правой кнопкой мыши.
Выберите «Свойства»
В открывшемся окне обратите внимание на «Файловую систему». Основные различия между файловыми системами показаны в руководстве по их выбору
Отформатируйте одним из способов, предложенных в материале ниже.
В этом случае вам нужно выбрать другую файловую систему. Например, если текущая NTFS, отформатируйте ее в exFAT или даже FAT32.
Когда процесс будет завершен, отключите USB-накопитель от вашего ПК, обязательно используйте безопасное извлечение. Для этого найдите значок Safe Removal Tool на панели задач.
Щелкните его правой кнопкой мыши и выберите «Оформить заказ».
Затем снова подключите устройство. Проблема будет решена.
Самый простой способ не всегда самый подходящий, например, он не поможет пользователям, которые хотят сохранить свои файлы.
Способ 2: Создание образа флешки и последующее форматирование (сохранение данных)
В большинстве случаев, если вы видите сообщение об ошибке ввода-вывода на флэш-накопителе, вы не сможете получить доступ к хранящимся на нем данным обычными средствами. Однако есть способ, который поможет сохранить хотя бы часть файлов — это создать образ флешки — виртуальную копию структуры файловой системы и всю информацию о ней. Один из самых простых способов создать образ — использовать инструмент HDD Raw Copy.
-
Запускайте утилиту всегда от имени администратора. Первый шаг — принять лицензионное соглашение.
Затем выбираем распознаваемую программой флешку и нажимаем «Продолжить».
Выберите пункт, отмеченный на снимке экрана, чтобы сохранить образ USB-накопителя в виде файла.
Появится окно «Проводник» с выбором места для сохранения копии. Выберите подходящий, но не забудьте сначала установить опцию «Raw Image» в списке «File Type» — только в этом случае вы получите полную копию флешки.
Вернувшись в главное окно HDM Рав Копи Тул, нажмите «Продолжить».
В следующем окне нам нужно нажать на кнопку «Пуск», чтобы запустить процесс клонирования флешки.
Это может занять много времени, особенно для объемных носителей, поэтому будьте готовы подождать.
В результате мы получим образ флешки в виде файла IMG. Для работы с образом нам необходимо его смонтировать. Лучше всего для этого использовать UltraISO или Daemon Tools Lite.
Способ 3: Восстановление флешки посредством утилиты chkdsk
В Windows есть утилита командной строки chkdsk, которая может помочь вам справиться с проблемой ошибки ввода-вывода.
-
Запустите «Командную строку» от имени администратора: для этого откройте «Пуск» и введите в строке поиска «cmd.exe».
Щелкните правой кнопкой мыши найденный файл и выберите «Запуск от имени администратора».
Когда откроется окно «Командная строка», введите команду chkdsk Z: / f, где Z — буква диска, обозначающая флэш-накопитель на вашем компьютере.
Начнется процесс проверки и восстановления диска. Если он завершился нормально, вы получите это сообщение.
Отключите USB-накопитель от ПК, используя безопасное извлечение (описано в способе 1), подключите заново через 5-10 секунд. Ошибка, скорее всего, исчезнет.
Этот способ тоже несложный, но помогает в том числе меньше всего.
Если все описанные выше методы не работают, то, скорее всего, вы столкнулись с физической неисправностью накопителя: механическое повреждение, выход из строя части блоков памяти или проблемы с контроллером. В этом случае, если на нем хранились важные данные, обратитесь в сервисный центр. Кроме того, вам могут помочь инструкции по восстановлению от производителя: Kingston, Verbatim, A-Data, Transcend.
§37. Устройства вывода
Практическая работа № 13 «Процессор и устройства вывода»
Для выполнения этих работ используется учебный компьютер «ЛамПанель», который можно загрузить со страницы https://kpolyakov.spb.ru/prog/lamp.htm.
Возможности программы «ЛамПанель»
Наконец, мы подошли к самой интересной возможности программы «ЛамПанель» — управлению ламповой панелью. Ламповая панель (цифра 1 на рисунке) – это устройство вывода.
Обмен данными процессора и внешнего устройства происходит через порты – регистры контроллера внешнего устройства. У ламповой панели 8 портов, которые называются P0, P1, P2, P3, P4, P5, P6 и P7. Каждый порт «отвечает» за одну строку лампочек, например, для того, чтобы «зажечь» всю верхнюю строку нужно записать в порт P0 код FFFF16 (все 16 бит – единичные). Для этого можно использовать, например, команды
MOV FFFF, R0
OUT R0, P0
К сожалению, записать число сразу в порт нельзя – сначала нужно записать его в регистр (в данном примере – в R0), а потом – из регистра в порт.
Для того, чтобы изменить второй сверху ряд лампочек, нужно записать новое значение в P1 и т.д.; последний ряд управляется портом P7. Например, для того, чтобы все ряды лампочек горели одинаково, можно записать нужный код сначала в регистр:
MOV AAAA, R0
а затем из этого регистра – во все порты:
OUT R0, P0
OUT R0, P1
…
OUT R0, P7
Здесь многоточие обозначает аналогичные команды записи содержимого регистра R0 в порты P2…P6. Однако вместо последней серии из 8 команд можно использовать всего одну:
SYSTEM 2
Эта команда вызывает системную процедуру с номером 2, находящуюся в ПЗУ компьютера. Для того, чтобы увидеть все процедуры, которые записаны в ПЗУ, нужно щелкнуть по кнопке или выбрать пункт верхнего меню Программа – Просмотр ПЗУ. После этого появляется окно, в левой части которого перечислены все системные процедуры (с их номерами), а в правой части показывается код выбранной процедуры:
В этом списке есть много полезных процедур, в том числе
0 – очистка экрана (погасить все лампочки);
1 – зажечь все лампочки на панели;
3-4 – прокрутка изображения вниз и вверх;
6-9 – логические операции;
A16-E16 – сдвиги битов;
1216 – вывод числа, записанного в регистр R0, в десятичной системе счисления;.
1316 – вывод числа, записанного в регистр R0, в шестнадцатеричной системе счисления.
Обратите внимание, что номер системной процедуры задается в шестнадцатеричной системе счисления.
Рассмотрим еще одну задачу: вывести на экран рисунок, закодированный в виде шестнадцатеричных чисел (бит, равный единице, обозначает горящую лампочку). Для этого нужно сначала записать коды рисунка в память. Поскольку наш компьютер основан на архитектуре фон Неймана, в нем программа и данные находятся в одной области памяти. Поэтому данные можно записать с помощью специальной команды DATA после команды STOP:
... ; здесь будет программа STOP M: ; метка – начало блока данных DATA AAAA ; код первой строчки DATA 5555 DATA AAAA DATA 5555 DATA AAAA DATA 5555 DATA AAAA DATA 5555 ; код последней строчки
Для того, чтобы вывести этот рисунок на экран, нужно записать его адрес в регистр R0 и вызвать системную процедуру с номером 5:
MOV @M, R0 ; записать адрес метки M в регистр R0
SYSTEM 5 ; вывести на экран рисунок, адрес которого в R0
STOP
M:
DATA AAAA ; код первой строчки
…
Задание на практическую работу
1. Запишите в таблицу минимальное и максимальное числа, которые можно вывести на ламповую панель, если использовать шестнадцатеричную систему:
2. Составьте программу, после выполнения которой ламповая панель выглядит так:
Программа:
3. Как вы думаете, что выведет приведенная выше (в теоретической части) программа, которая вызывает системную процедуру с номером 5? Проверьте ваш ответ с помощью тренажёра.
Ответ:
4. Закодируйте изображение домика и выведите его на экран.
Программа:
5. Добавьте в предыдущую программу команды, которые сначала шифруют изображение, используя операцию «исключающее ИЛИ» с маской BCA716, а затем – восстанавливают исходное изображение. При изменении маски программа не должна изменяться. Изучите текст системной процедуры, которую вы используете.
Программа:
6. Напишите программу, которая делает «бегущую строку» из рисунка-домика.
Программа:
7. Напишите программу, которая организует «обратный отсчет» от 100 до 0, а затем выводит рисунок с домиком и останавливается.
Программа:
Следующая страница §34. Процессор
Cкачать материалы урока
Ввод-вывод с помощью потоков STL
Для использования объектно-ориентированного консольного ввода-вывода с помощью потоков (stream) STL в программу необходимо включить заголовочный файл , а для файлового ещё и . (Разумеется, компилятор должен иметь доступ к соответствующей объектной библиотеке для правильной сборки исполняемого файла.)
Самая Первая Программа с использованием потоков STL выглядит так:
При запуске консольного приложения неявно открываются четыре потока: сin — для ввода с клавиатуры, сout — для буферизованного вывода на монитор, сerr — для небуферизованного вывода на монитор сообщений об ошибках и clog — буферизованный аналог cerr. Эти четыре символа определены посредством .
Потоки cin, cout и cerr соответствуют потокам stdin, stdout и stderr соответственно.
Иерархия классов ввода-вывода STL достаточно сложна. Любители тонких ощущений могут найти её описание в литературе. Впрочем, остальных также не минует чаша сия, но только позже, когда потребуются знания чуть повыше того базового уровня, который описывается здесь.
Для ввода-вывода сначала необходимо создать поток — экземпляр соответствующего класса STL, а затем связать его с файлом. Для потока вывода используется класс ofstream, для потока ввода — ifstream, для потока ввода-вывода — fstream. В каждом из этих классов есть метод open(), который связывает поток с файлом. Проще говоря, открывает файл. Методу передаются два параметра: имя файла и режим открытия файла. Второй параметр представляет собой набор битовых флагов, определяющих режим открытия файла (чтение, запись и пр.) и способ работы с данными (текстовый или двоичный режим). Второй параметр опционален, т.е. имеет значение по умолчанию, соответствующее классу.
Вышеупомянутые классы имеют также конструкторы, позволяющие открыть файл сразу при создании потока. Параметры этих конструкторов полностью совпадают с параметрами метода open().
При ошибке открытия файла (в контексте логического выражения) поток получает значение false.
Файл закрывается методом close(). Этот метод также вызывается при разрушении экземпляров классов потоков.
Операции чтения и записи в поток, связанный с файлом, осуществляются либо с помощью операторов << и >>, перегруженных для классов потоков ввода-вывода, либо с помощью любых других методов классов потоков ввода-вывода.
Некоторые наиболее употребляемые методы:
Табличный вывод
При указании формата можно явным образом указать общее количество знакомест и количество знакомест, занимаемых дробной частью:
12345678
#include <stdio.h>int main(){ float x = 1.2345; printf(«x=%10.5f\n», x); getchar(); return 0;}
В приведенном примере 10 — общее количество знакомест, отводимое под значение переменной; 5 — количество позиций после разделителя целой и дробной части (после десятичной точки). В указанном примере количество знакомест в выводимом числе меньше 10, поэтому свободные знакоместа слева от числа заполняются пробелами. Такой способ форматирования часто используется для построения таблиц.
Вывод информации
Функция printf() предназначена для форматированного вывода. Она переводит данные в символьное представление и выводит полученные изображения символов на экран. При этом у программиста имеется возможность форматировать данные, то есть влиять на их представление
на экране.
Общая форма записи функции printf():
printf(«СтрокаФорматов», объект1, объект2, …, объектn);
СтрокаФорматов
- управляющих символов;
- текста, представленного для непосредственного вывода;
- форматов, предназначенных для вывода значений переменных различных типов.
Объекты могут отсутствовать.Управляющие символы не выводятся на экран, а управляют расположением выводимых символов. Отличительной чертой управляющего символа является наличие обратного слэша ‘\’ перед ним.
Основные управляющие символы:
- ‘\n’ — перевод строки;
- ‘\t’ — горизонтальная табуляция;
- ‘\v’ — вертикальная табуляция;
- ‘\b’ — возврат на символ;
- ‘\r’ — возврат на начало строки;
- ‘\a’ — звуковой сигнал.
Форматы нужны для того, чтобы указывать вид, в котором информация будет выведена на экран. Отличительной чертой формата является наличие символа процент ‘%’ перед ним:
- %d — целое число типа int со знаком в десятичной системе счисления;
- %u — целое число типа unsigned int;
- %x — целое число типа int со знаком в шестнадцатеричной системе счисления;
- %o — целое число типа int со знаком в восьмеричной системе счисления;
- %hd — целое число типа short со знаком в десятичной системе счисления;
- %hu — целое число типа unsigned short;
- %hx — целое число типа short со знаком в шестнадцатеричной системе счисления;
- %ld — целое число типа long int со знаком в десятичной системе счисления;
- %lu — целое число типа unsigned long int;
- %lx — целое число типа long int со знаком в шестнадцатеричной системе счисления;
- %f — вещественный формат (числа с плавающей точкой типа float);
- %lf — вещественный формат двойной точности (числа с плавающей точкой типа double);
- %e — вещественный формат в экспоненциальной форме (числа с плавающей точкой типа float в экспоненциальной форме);
- %c — символьный формат;
- %s — строковый формат.
Строка форматов содержит форматы для вывода значений. Каждый формат вывода начинается с символа %. После строки форматов через запятую указываются имена переменных, которые необходимо вывести.
Количество символов % в строке формата должно совпадать с количеством переменных для вывода. Тип каждого формата должен совпадать с типом переменной, которая будет выводиться на это место. Замещение форматов вывода значениями переменных происходит в порядке их следования.Пример на Си
12345678910
#include <stdio.h>int main(){ int a = 5; float x = 2.78; printf(«a=%d\n», a); printf(«x=%f\n», x); getchar(); return 0;}
Результат работы программы
Тот же самый код может быть представлен с использованием одного вызова printf:
123456789
#include <stdio.h>int main(){ int a = 5; float x = 2.78; printf(«a=%d\nx=%f\n», a, x); getchar(); return 0;}