КАТЕГОРИИ: Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748) |
Модификаторы типа
Функции форматного ввода/вывода (scanf/printf) файл stdio.h Функция вывода printf(),выполняет форматируемый вывод в стандартный поток stdout. (т.е. значения переменных, которые хранятся в памяти в двоичном виде, при выводе в поток (на экран) переводятся в символьный вид, причем вид преобразования задается спецификатором формата. Спецификаторы формата задаются как составная часть обязательного первого аргумента — форматной строки. После форматной строки задается список выражений, значения которых должны выдаваться на экран. В качестве выражений допускается задавать и переменные. Функция возвращает количество выведенных символов. Спецификатор формата начинаются символом % (процент), вслед за которым прописывается код формата. Количество аргументов-переменных должно в точности соответствовать количеству спецификаторов формата. При отсутствии списка переменных функция просто выводит в поток (на экран) форматную строку. спецификация формата имеет следующий вид: %[флаг][ширина][.точность][h|l|L]тип\ здесь квадратные скобки означают, что соответствующий элемент спецификации может отсутствовать. В простейшем виде спецификатор формата записывается как %тип Тип задается одной буквой, и определяет, в каком виде предстанет значение переменной в потоке (на экране). Так как знак процента % используется как управляющий, то для вывода его в поток надо прописать его в форматной строке дважды %%. Таблица. Некоторые типы спецификаторов формата
Ширина показывает, сколько символов будет выведено в поток. В это число входят все символы: и знак, и десятичная точка для дробных чисел. Если ширина окажется фактически меньше, чем требуется для вывода, то все равно значение выводится полностью. Точность задает количество цифр дробной части и применяется обычно только для дробных чисел. Перед типом может стоять модификатор типа. Обычно модификаторы применяются к числовым переменным: в этом случае они указывают короткую (h) или длинную (L,l) форму типа. Например, тип %f применяется для вывода значений типа float, %lf — для вывода double, а %Lf — для вывода значений long double.
Вместо ширины и точности в спецификаторе формата можно указывать символ * (звездочка). Это позволяет задавать и ширину, и точность как значения целых переменных — это позволяет вычислять ширину поля вывода во время выполнения программы. Рассмотрим простейший пример:
На экране выводятся две строки -0012.3000 -00000012.30000 Переменные, в которых указаны ширина и точность, должны задаваться первыми в списке аргументов после форматной строки, иначе программа просто зацикливается. В связи с возможностью задавать переменную ширину поля часто бывает необходимо знать количество символов, выведенных в поток после последнего освобождения буфера. И эту величину можно получить с помощью спецификатора %n. В списке аргументов после форматной строки задается адрес целой переменной, куда и заносится количество выведенных в поток символов. Например.
В переменную kk, адрес которой задан в списке аргументов, помещается количество символов, выведенных в поток с момента последнего освобождения буфера, в данном случае 15. А теперь про ввод Функция scanf() выполняет форматируемый ввод из стандартного потока stdin в переменные программы. Так как stdin "привязан" к клавиатуре, то при вводе, очевидно, выполняется преобразование из символьного вида во внутренний двоичный формат. Первым параметром тоже является форматная строка, за которой следует список адресов переменных, куда требуется поместить задаваемые значения. Символы в форматной строке делятся на три вида: спецификаторы формата, разделители и прочие. К разделителям относятся пробел, табуляция ('\t') и символ конца строки ('\n'). Спецификаторы формата — такие же, как и для функции printf(). В общем виде спецификатор формата имеет следующую форму: %[ширина][h/l/L]тип, квадратные скобки означают, что этот элемент спецификатора может отсутствовать. По сравнению со спецификатором формата для вывода только символ *(звездочка) имеет другой смысл: если она указана, то запись значения в соответствующую переменную не происходит. Например, можно определить ввод двух значений в две числовых переменных, разделяя их при вводе любым символом
В этом случае мы можем задавать ввод и так 1б2 и так 1,2 и так 1-2 Во всех случаях в переменную a попадет значение 1, а в переменную b — значение 2. ПРИМЕЧАНИЕ Ввод строк выполняется обычно другими, более подходящими функциями, например, fgets(), которую мы далее рассмотрим. При этом, естественно, речь идет о символьных массивах, а не о переменных типа string.
Если мы попробуем ввести последовательность символов "1234 567", то в массив ss попадет только "1234". Кроме того, обратите внимание, что имя массива нужно прописывать без амперсанта — это единственное исключение из общего правила! При вводе данных посредством scanf() надо совершенно жестко придерживаться формата ввода. Например, при вводе нескольких значений можно разделять их символами пунктуации (запятая, точка с запятой, двоеточие). Эти символы должны быть прописаны и в форматной строке, например
При вводе надо так и набирать на клавиатуре а,б,в<Enter> // ввод трех символов 1,2,3<Enter> // ввод трех чисел
Дата добавления: 2015-05-10; Просмотров: 460; Нарушение авторских прав?; Мы поможем в написании вашей работы! Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет |