Форматы А0, А1, А2, А3, А4, А5, А6 размеры в сантиметрах
char * fgets ( char * str, int num, FILE * stream ) – функция позволяет считывать строку с пробельными символами. Несмотря на то, что она работает с файлом, можно с её помощью считывать и из стандартного потока ввода. Её преимущество относительно gets в том, что она позволяет указать максимальный размер считываемой строки и заканчивает строку терминальным символом.
Форматированный ввод и вывод
Теги: Форматированный ввод, форматированный вывод, printf, scanf, fgets, getch, строка формата, спецификатор формата, флаги, управляющие символы.
Форматированный вывод
Сегодня мы рассмотрим две важные функции форматированного ввода и вывода. Устройство и работу этих функций полностью можно понять только после изучения работы с указателями и функций с переменным числом параметров. Но пользоваться этими функциями необходимо уже сейчас, так что некоторые моменты придётся пропустить.
Функция форматированного вывода printf получает в качестве аргументов строку формат и аргументы, которые необходимо вывести в соответствии с форматом, и возвращает число выведенных символов. В случае ошибки возвращает отрицательное значение и устанавливает значение ferror. Если произошло несколько ошибок, errno равно EILSEQ.
int printf (const char * format, . );
#include #include void main() < //функция не получает никаких аргументов, кроме строки printf("Hello world"); getch(); >
Функция проходит по строке и заменяет первое вхождение % на первый аргумент, второе вхождение % на второй аргумент и т.д. Далее мы будем просто рассматривать список флагов и примеры использования.
Общий синтаксис спецификатора формата
%[флаги][ширина][.точность][длина]спецификатор
Спецификатор – это самый важный компонент. Он определяет тип переменной и способ её вывода.
| Спецификатор | Что хотим вывести | Пример |
|---|---|---|
| d или i | Целое со знаком в в десятичном виде | 392 |
| u | Целое без знака в десятичном виде | 7235 |
| o | Беззнаковое в восьмеричном виде | 657 |
| x | Беззнаковое целое в шестнадцатеричном виде | 7fa |
| X | Беззнаковое целое в шестнадцатеричном виде, верхний регистр | 7FA |
| f или F | Число с плавающей точкой | 3.4563745 |
| e | Экспоненциальная форма для числа с плавающей точкой | 3.1234e+3 |
| E | Экспоненциальная форма для числа с плавающей точкой, верхний регистр | 3.1234E+3 |
| g | Кратчайшее из представлений форматов f и e | 3.12 |
| G | Кратчайшее из представлений форматов F и E | 3.12 |
| a | Шестнадцатеричное представление числа с плавающей точкой | -0xc.90fep-2 |
| A | Шестнадцатеричное представление числа с плавающей точкой, верхний регистр | -0xc.90FEP-2 |
| c | Буква | a |
| s | Строка (нуль-терминированный массив букв) | Hello World |
| p | Адрес указателя | b8000000 |
| n | Ничего не печатает. Аргументом должен быть указатель на signed int. По этому адресу будет сохранено количество букв, которое было выведено до встречи %n | |
| % | Два идущих друг за другом процента выводят знак процента | % |
#include #include void main()
Строка формата также может включать в себя следующие необязательные суб-спецификаторы: флаг, ширина, .точность и модификатор (именно в таком порядке).
| Флаг | Описание |
|---|---|
| – | Выключка влево на заданное шириной значение |
| + | Явно указывать знак у числа, даже для положительных чисел |
| (пробел) | Если знак не будет выведен, то вставляет пробел перед выводимым числом |
| # | Когда используется вместе с o, x или X, вставляет перед числом 0, 0x или 0X Когда используется со спецификаторами a, A, e, E, f, F, g или G, вставляет десятичную точку, даже если после неё нет десятичных знаков. |
| 0 | Вставляет нули, когда объявлен спецификатор ширины |
| Ширина | Описание |
|---|---|
| (число) | Минимальное количество знаков, которое необходимо вывести. Если в числе меньше знаков, то вставляет пробелы (или нули) |
| * | Ширина не указана в строке формата, она передаётся отдельно в виде аргумента, который должен предшествовать выводимому числу |
| .Точность | Описание |
|---|---|
| .число | Для спецификаторов целых (d, i, o, u, x, X) точность определяет минимальное количество знаков, которое необходимо вывести. Если значение короче, то выводятся нули перед числом. Значение не обрезается, даже если оно длиннее. Точночть 0 означает, что для значения 0 ничего не выводится. Для спецификаторов чисел с плавающей точкой (a, A, e, E, f, F) это число знаков, которые необходимо вывести после десятичной точки (по умолчанию 6). Для g и G – это число значащих разрядов, которые необходимо вывести. Для s – выводится указанное число символов. По умолчанию выводятся все символы до первого нулевого. Если число не стоит, то по умолчанию точность равна 0 |
| .* | Точность не указана в строке формата, она передаётся отдельно в виде аргумента, который должен предшествовать выводимому числу |
#include #include void main()
Суб-спецификатор длины изменяет длину типа. В случае, если длина не совпадает с типом, по возможности происходит преобразование до нужного типа.
| спецификаторы | |||||||
|---|---|---|---|---|---|---|---|
| Длина | d, i | u o x X | f F e E g G a A | c | s | p | n |
| (none) | int | unsigned int | double | int | char* | void* | int* |
| hh | signed char | unsigned char | signed char* | ||||
| h | short int | unsigned short int | short int* | ||||
| l | long int | unsigned long int | wint_t | wchar_t* | long int* | ||
| ll | long long int | unsigned long long int | long long int* | ||||
| j | intmax_t | uintmax_t | intmax_t* | ||||
| z | size_t | size_t | size_t* | ||||
| t | ptrdiff_t | ptrdiff_t | ptrdiff_t* | ||||
| L | long double | ||||||
#include #include void main()
Форматированный ввод
Рассмотрим форматированный ввод функцией scanf.
int scanf(const char*, . )
Функция принимает строку формата ввода (она похожа на строку формата printf) и адреса, по которым необходимо записать считанные данные. Возвращает количество успешно проинициализированных аргументов.
Формат спецификатора ввода
%[*][ширина][длинна]спецификатор
| Спецификатор | Описание | Выбранные символы |
|---|---|---|
| i, u | Целые | Произвольное число цифр (0-9), возможно, начинающихся с + или -. Если число начинается с 0, то считывается в восьмеричном формате, если с 0x, то в шестнадцатеричном. |
| d | Десятичное целое | Произвольное число цифр (0-9), возможно, начинающихся с + или -. |
| o | восьмеричное целое | Произвольное число цифр (0-7), возможно, начинающихся с + или -. |
| x | Шестнадцатеричное целое | Произвольное число цифр (0-F), возможно, начинающихся с + или – и префикса 0x или 0X. |
| f, e, g | Число с плавающей точкой | Число, состоящее из набора цифр 0-9, возможно с десятичным разделителем (точкой). Возможно также представление в экспоненциальной форме. C99 позволяет также вводить число в шестнадцатеричном формате. |
| a | ||
| c | Символ | Если ширина не передана, то считывает один символ. Если ширина передана, то считывает нужное количество символов и размещает их в массиве БЕЗ терминального символа на конце. |
| s | Строка | Считывает все не пробельные символы. Если указана ширина, то не более n символов. Ставит на место n+1 символа терминальный. |
| p | Адрес указателя | Последовательность символов, трактуемая как адрес указателя. Формат зависит от реализации, но совпадает с тем, как выводит printf с ключом p |
| [символы] | Множество символов | Считывает только те символы, которые записаны в квадратных скобках, С99 |
| [^символы] | Множество символов | Считывает только те символы, которые не указаны в квадратных скобках, С99 |
| n | Ничего не считывает | Сохраняет число уже считанных символов по указанному адресу |
Как и в printf, ширина, заданная символом * ожидает аргумента, который будт задавать ширину. Флаг длина совпадает с таким флагом функции printf.
#include #include void main() < int year, month, day; char buffer[128]; int count; //Требует форматированного ввода, например 2013:12:12 printf("Enter data like x:x:x = "); scanf("%d:%d:%d", &year, &month, &day); printf("year = %d\nmonth = %d, day = %d\n", year, month, day); //Считываем строку, не более 127 символов. При считывании в массив писать & не надо, //так как массив подменяется указателем printf("Enter string = "); scanf("%127s", buffer); printf("%s", buffer); getch(); >
Кроме функций scanf и printf есть ещё ряд функций, которые позволяют получать вводимые данные
int getch() [aka _getch(), getchar()] – возвращает введённый символ, при этом не выводит его на консоль.
#include #include void main() < char c = 0; do < c = getch(); printf("%c", c); >while (c != 'q'); >
char * fgets ( char * str, int num, FILE * stream ) – функция позволяет считывать строку с пробельными символами. Несмотря на то, что она работает с файлом, можно с её помощью считывать и из стандартного потока ввода. Её преимущество относительно gets в том, что она позволяет указать максимальный размер считываемой строки и заканчивает строку терминальным символом.
#include #include #include void main() < char buffer[128]; //Считываем из стандартного потока ввода fgets(buffer, 127, stdin); printf("%s", buffer); //Этим можно заменить ожидание ввода символа scanf("1"); >
Это не полный набор различных функций символьного ввода и вывода. Таких функций море, но очень многие из них небезопасны, поэтому перед использованием внимательно читайте документацию.
Непечатные символы
В си определён ряд символов, которые не выводятся на печать, но позволяют производить форматирование вывода. Эти символы можно задавать в виде численных значений, либо в виде эскейп-последовательностей: символа, экранированного обратным слешем.
| Последовательность | Числовое значение | Результат |
|---|---|---|
| \a | 0x07 | Звуковой сигнал |
| \b | 0x08 | Перевод каретки на одно значение назад |
| \f | 0x0c | Новая страница |
| \n | 0x0a | Перевод строки, новая строка |
| \r | 0x0d | Возврат каретки |
| \t | 0x09 | Табуляция |
| \v | 0x0b | Вертикальная табуляция |
| \” | 0x22 | Двойная кавычка |
| \\ | 0x5с | Обратный слеш |
#include #include void main() < char backspace = 0x08; //Выводим с использованием символа переноса строки printf("Hello\nWorld\n"); //Выводим символ переноса строки через его значение printf("Hello%cWorld\n", 0x0a); //"Выводим" сигнал printf("\a"); //Выводим сигнал, как символ printf("%c", '\a'); //Выводим сигнал через шестнадцатеричное значение printf("%c", 0x07); printf("This is sparta. \b\b%c", backspace); printf(" "); getch(); >
Форматы А0, А1, А2, А3, А4, А5, А6 размеры в сантиметрах
Работая с различными видами печатной продукции, мы часто сталкиваемся с упоминанием различных размеров, кодифицируемых загадочными для многих обозначениями. И если с популярным А4 многие из нас знакомы, то упоминание других видов вводит многих людей в ступор. Ниже мы разберём, что за форматы А0, А1, А2, А3, А4, А5, А6, и приведём их размеры в сантиметрах. А также опишем, где они наиболее всего используются.
Особенности форматов бумаги серии А
Как известно, под форматом бумаги понимается стандартизированный размер бумажного листа. Популярная в сегодняшней России серия А начала применяться в Европе примерно с 19 века. На сегодняшний день она распространилась по всему миру и используется повсеместно, за исключением США, Канады, и некоторых частей Мексики.
Наиболее популярный формат серии А – это А4 , с которыми многие из нас довольно часто встречаются. Данная маркировка имеет размер 210 мм x 297 мм (или 8,27 дюйма на 11,7 дюйма).
Наибольший же лист формата серии А – это А0 , являющий собой лист площадью 1 квадратный метр, и имеющий размер 841 мм на 1189 мм .
Пользователи серии А использует соотношение сторон 1:√2, потому другие размеры серии обычно получаются путём деления листа наполовину (параллельно меньшим сторонам). К примеру, разрезав лист А4 наполовину мы получим два листа размера А5. Любой размер брошюры может быть получен от большего листа большего. Потому, разделив лист А3, мы получим материал для создания брошюр формата А4.
Размеры бумажной серии А определяется международным стандартом ISO 216 . В нём перечислены следующие принципы:
- Высота, деленная на ширину всех форматов, представляет собой квадратный корень из двух (1.4142).
- А0 являет собой площадь одного квадратного метра;
- А1 являет собой формат А0, разделённый на две равных части. Другими словами, высота A1 равна ширине A0, а ширина A1 равна половине высоты A0;
- Все меньшие размеры серии А определяются тем же самым образом. Если вы делите формат An параллельно его короткой стороне на два равных листа бумаги, они будут иметь формат A (n + 1);
- Стандартизованная высота и ширина бумаги – это округленное число миллиметров.
Для случаев, при которых серия ISO A не обеспечивает адекватный размер, была введена серия B, позволяющая охватить более широкий диапазон.
Для бумажных конвертов применяется форматы серии C.
Примеры применения в сантиметрах размеров бумаги А0, А1, А2, А3, А4, А5, А6
Давайте разберём наиболее популярные примеры применения бумажных форматов:
- А0 . Имеет размер в 1 квадратный метр (84,1 на 118,9 см), и применяется в различных технических чертежах (ватманах), при создании различных постеров и плакатов.
- А1 . Как и в случае формата А0, формат А1 (59,4 на 84,1 сантиметров) применяется в сфере профессионального проектирования, при работе с ватманскими листами, при печати постеров. Лист А1 получается при делении листа маркировки А0 пополам.
- А2 . Имеет размер 42 на 59,4 см. Применяется при работе с магнито-маркетными досками (флипчартами), при печати баннеров, курсовых и дипломных работ, а также некоторых стандартных газет. Этот формат получается путём деления пополам бумаги размера А1.
- А3 . Имеет размер 29,7 на 42 см. Применяется при работе с чертежами, диаграммами, большими таблицами, коллажами, картинами, а также с газетами, которые печатаются с помощью большинства копировальных аппаратов.
Преимущества стандарта ISO 216
Основные преимущества использования стандарта ISO становятся очевидны для пользователей, работающих с копировальными машинами.
К примеру, вы находитесь в библиотеке, и хотите скопировать статью с журнала, имеющего формат А4. Желая поберечь бумагу, вы хотите скопировать две журнальные страницы на один лист. При открытии журнала две страницы А4 вместе будут составлять одну страницу размера А3. Установив коофициент увеличения копировальной машины на 71% (или нажав на кнопку « A3→A4 », имеющуюся на множестве копировальных машин) при печати обе страницы А4 журнальной статьи будут уменьшены. Не нужно тратить лишние листы бумаги, текст статьи не будет урезан, дополнительные эксперименты не понадобятся. Очень удобно.
Копировальные машины, созданные для работы с бумажным стандартом ISO, имеют специальные кнопки для следующих, часто используемых, коэффициентов увеличения:
А вот таблица коэффициентов увеличения для всех форматов серии А:
Как вычислить размеры формата А
Размеры бумаги ISO указаны в таблице, где приведена их ширина и высота в миллиметрах. Следуя принципам, описанным выше, указанные размеры могут также быть рассчитаны по следующим формулам:
Формат
Ширина [m]
Высота [m]
Comments are closed, but trackbacks and pingbacks are open.