ТОР 5 статей: Методические подходы к анализу финансового состояния предприятия Проблема периодизации русской литературы ХХ века. Краткая характеристика второй половины ХХ века Характеристика шлифовальных кругов и ее маркировка Служебные части речи. Предлог. Союз. Частицы КАТЕГОРИИ:
|
Форматированный ввод и выводДве функции - scanfO и рriпtf() (спецификации в файле прототипов stdio.h) выполняют, соответственно, консольный ввод и вывод. Этим функциям передаeтcя переменное число аргументов, но первым аргументом всегда являercя текcтoвая (так называемая форматная) строка. Она задает способ преобразования данных. Функция priпtf() выдает на экран всю форматную строку, в которой знак %ххх заменяeтcя символами выводимой информации. Символы после % до первогo разделителя рассматриваются как спецификация преобразования значения выводимой переменной. Имя переменной - этo второй, третий и т.д. аргументы списка аргументов. Функция scanf() принимает с консоли все символы до нажатия клавиши ENTER и помещает их в буфер. Затем по форматной строке определяется способ преобразования введенных символов в соответствии с заданными спецификациями. Полученное в результате преобразования число помещается по адресу переменной, который является вторым, 3-им и т.д. аргументом в списке аргументов функции. Спецификация преобразования задается в виде последовательности % [флаги ] [ширина] [. точность] [F | N | h |1 ]<тип> Каждое из выделенных выше квадратными скобками полей (т.о. указывается, что поля необязательны, но их расположение в порядке перечисления должно строго соблюдаться). В табл. ниже перечисляются некоторые из знаков, задающих спецификации преобразования. Функции scanf() и printf() возвращают в качестве прямого результата своей работы количество правильно переданных или принятых элементов. Этот факт можно использовать в программе для контроля выполнения ввода и вывода – сравнивая возвращаемое функциями значение с числом элементов в списке ввода или вывода.
Самостоятельно - выяснить недостающие спецификаторы типа!
Пример #include <stdio.h> void main(void) { сhar ch; int i, j; l/oat х, х2; сhar name[81]; printf("\nВвeдитe Ваше имя:"); scanf("%s", name); рrintf("Здравствуйте, %s. Вас приветствует” "звонком комnьютер\а\n", name); рrintf("Введите любое целоe число:"); fflush(stdin); scanf("%d", &i); j = i + 4; printf("%d + 4 = %d, верно?\n", i, j); printf("Bвeдитe число с плавающей точкой: "); scanf("%f, &х); х2 = х * х; рrintf("%f в квадрате = %f, верно?\n", х, х2); printf("Bвeдиme любoй символ: "); fflush(stdin); scaпf{"%c", &ch); printf("ASCII-код cuмвoлa %с = %d (%#х)\n", ch, ch, ch); } Далее.приводятся. результаты работы программы: Введите Ваше uмя: Александр Касаткин Здравствуйте, Александр. Вас приветствует звонком компьютер Введите любое целое число: 36 36 + 4 = 40, верно? Введите число с плавающей точкой: 5.е1 50.000000 в квадрате = 2500.000000, верно? Введите любой сuмвол: 1 ASCII-код сuмвола 1 = 49 (0хЗ1) Программа последовательно выдает приглaшения. После набора запрашиваемой информации следует нажать клавишу ENTER. После ее нажатия функция scanf() прекращает прием символов во внутренний буфер и переходит к обработке ввода в соответствии с форматной строкой. На приглашение ввести имя в буфер функции было помещено два слова - имя и фамилия. При выводе же строки namе функцией printf() на экране появляется только первое слово - имя. Дело в том, что по спецификации %s функция scanf() передает в программу все символы до первогo разделителя, такого как пробел, табуляция. Оставшиеся в буфере символы будут поступать в прогpамму при следующих обращениях к функции scanf(), что нe входит в наши планы. Вот почему перед очередным обращением к функции scanf() выполняется очистка буфера stdin функцией fflush(). После вывода на экран второй строки звенит звонок, так как на консоль выдается символ '\а'. Следует обратить внимание на то, что для скалярных переменных при вводе данных необходимо указывать их адрес (применять операцию &). Указание имен массивов приводит к автоматической генерации их базовых адресов размещения в ОЗУ. При выводе данных в качестве параметров функции printf() можно указывать выражения. Пример int i, j; float x; char s[81]; scanf(“%d%d%f%s”, &i, &j, &x, s); printf(“y = %f”, x + 12.05);
Не нашли, что искали? Воспользуйтесь поиском:
|