АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомДругоеЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция

Ввод/ вывод в С

Читайте также:
  1. Assigning Pin Location Constraints (назначение ограничений на размещение выводов).
  2. IV. Некоторые уроки и выводы.
  3. IX. Выводы и проблемы
  4. Pre Wash - пятновыводитель, аэрозоль 400 мл
  5. Reimplement Design and Verify Pin Locations (Повторная реализация разработки и верификация размещения выводов).
  6. А.2.5) Выводы.
  7. Анализ результатов и выводы
  8. Анализ результатов и выводы.
  9. Анализ эмпирических показателей и формулировка выводов
  10. Апитерапия и фитотерапия в лечении заболеваний почек и мочевыводящих путей
  11. Б) Определить, какую дозу получат люди, находящиеся 4 суток в подвале, в доме. Сделать выводы о степени воздействия РВ и его последствиях.
  12. В заключении выпускной квалифицированной работы обобщены результаты проведенного теоретического и практического исследования, сформулированы основные выводы.
Функции printf() и scanf() используются для ввода и вывода информации. Точнее, функция printf()заведует выводом, а функция scanf() - вводом. Эти две функции очень похожи между собой, поэтому рассмотрим сначала функцию printf(), а после перейдем к изучению scanf(). Чтобы работать с этими функциями без проблем, не забывайте подключать в своих приложениях библиотеку stdio.h Функция printf() Как уже упоминалась ранее, функция printf() является функцией вывода. Рассмотрим прототип данной функции:   Элементы, которые необходимо вывести на экран, нужно расположить в функции в таком порядке, в каком в управляющей строке расположены для них спецификаторы преобразования. Это связано с работой функции printf(). Функция выводит без изменений все символы управляющей строки за исключением спецификаторов преобразования. Когда функция находит в управляющей строке первый спецификатор преобразования, она подставляет значение второго параметра (т.е.argument1)на место спецификатора, предварительно преобразовав это значение в соответствии с данным спецификатором. Далее, найдя следующий спецификатор, функция подставляет на его место третий параметр и так далее. Рассмотрим примеры: int numPages = 273; printf("The book has %d pages.", numPages); выведет на экран The book has 273 pages.   float nQuantity = 100; printf("They have eaten only %f%% from %d kilograms of food\n", nQuantity/3, 25); выведет на экран They have eaten only 33.333333% from 25 kilograms of food.   Функция scanf() Как уже упоминалось в начале функция scanf() используется для обработки информации, введенной пользователем с клавиатуры. Несомненный плюс данной функции, что она может преобразовывать введенную информацию не только в символы, но и в числа, в том числе и в числа с плавающей точкой. Возвращает эта функция число элементов, которые она успешно прочитала. Если она не прочла никаких элементов, функция возвращает значение 0. Функция scanf() вернет значение EOF, если обнаружит символ конца строки или символ конца файла, а также в случае ошибки. Первый параметр функции - control-str - как и в предыдущей функции это управляющая строка, сопровождаемая списком параметров argument. После управляющей строки идут параметры argument, каждый из которых является адресом переменной, в которую будет записано введенное и считанное значение. Следовательно,если мы используем функцию для чтения строки в символьный массив, в качестве аргумента мы передаем название символьного массива, в остальных случаях, то есть для чтения других типов - мы передаем название переменной со знаком амперсанта (&). Управляющая строка указывает, в какие форматы должен быть преобразован вводимый текст. В ней также используются спецификаторы преобразования, их прототип похож на прототип спецификатора функции printf, но все же отличается. Вот как выглядит прототип спецификатора преобразования функции scanf(): % [*] [width] [{h | l | L}] type Для того, чтобы отделить вводимые значения, функция scanf() использует символы, называемые служебными. К ним относятся символы перевода строки, табуляции и пробелы. Что сие значит: во время ввода информации пользователь должен после каждого введенного значения вводить служебный символ для того, чтобы показать функции, что он закончил ввод очередного значения. Единственное исключение - спецификатор %c, который читает каждый следующий символ, даже если этот символ является служебным. Приведем пример: char name[15]; int age; float salary; printf("Input your name, age and your salary\n"); scanf("%s %d %f", name, &age, &salary); printf("Name is %s\n Age is %d\n Salary is %6.2f\n", name, age, salary); когда на экране появляется строка Input your name, age and your salary мы вводим Bill 35 521.55 после этого на экране должна появиться строка Name is Bill Age is 35 Salary is 521.55 Модификатор * заставляет функцию scanf() игнорировать соответствующий ввод. То есть, если в спецификаторе преобразования стоит звездочка, то функция введенное значение не записывает в переменную. Пример: int num; printf("Input 3 numbers:\n"); scanf("%*d %d %*d", &num); printf("Second number is %d\n",num); когда на экране появится строка Input 3 numbers: мы вводим 44 55 66 в результате чего на экране должна появиться строка Second number is 55 Второй необязательный модификатор спецификатора - width - максимальная ширина поля. Ввод останавливается, когда достигнута максимальная ширина поля или при обнаружении служебного символа. После достижения максимальной ширины поля функция считает, что начался ввод следующего значения. Использование необязательных префиксов h | l | L рассмотрено в таблице:
Использование префикса с типом спецификатора определяет тип
l d, i, o, x или X long
l u unsigned long
l e, f, g, E или G double
h d, i, o, x, или X short int
h u unsigned short int
L e, f, g, E или G long double

Как Вы уже заметили, в контрольной строке функции scanf() между спецификаторами преобразования в примерах использовались пробелы. Пробел в контрольной строке означает, что нужно пропускать любой служебный символ перед следующим получаемым элементом. Так как практически все спецификаторы, за исключением %с, автоматически пропускают служебные символы, то:

int n;

float m;

строка кода

scanf("%d%f", &n, &m);

идентична

scanf(" %d %f", &n, &m);

Если же используется спецификатор преобразования %с, то без пробела перед этим спецификатором функция считает любой первый символ, в том числе и служебный. Но если же перед спецификатором %с стоит пробел, то функция считает первый неслужебный символ.

В контрольной строке можно также использовать обычные символы, отличные от пробела. Например,

scanf("%d + %f", &n, &m);

В этом примере функция будет ожидать от пользователя, что он введет между двумя значениями знак +. Если же не ввести с клавиатуры символ +, то в последующие элементы не будут занесены значения.

 


 

32. Ввод/вывод в С++

Язык C++ точно так же не располагает встроенными средствами ввода-вывода, но предлагает модульный подход к решению данной проблемы, группируя возможности ввода-вывода в трех основных потоковых классах:

istream содержит средства ввода
ostream содержит средства вывода
iostream поддерживает двунаправленный ввод-вывод, является производным от первых двух классов

Во всех этих классах реализованы операторы << и >>, оптимизированные для работы с конкретными данными.

Библиотека IOSTREAM.H содержит также классы, с помощью которых можно управлять вводом-выводом данных из файлов:

ifstream Порожден от istream и подключает к программе файл, предназначенный для ввода данных

ofstream Порожден от ostream и подключает к программе файл, предназначенный для вывода данных

fstream Порожден от iostream и подключает к программе файл, предназначенный как для ввода, так и для вывода данных


1 | 2 | 3 | 4 | 5 | 6 | 7 |

Поиск по сайту:



Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Студалл.Орг (0.004 сек.)