Похожие презентации:
Функции ввода-вывода
1.
Функции ввода-вывода языка C/C++Функции ввода-вывода
в языке C и C++
Форматированный ввод-вывод в C, потоковый
ввод-вывод в C++, правила форматирования,
типичные ошибки и практические рекомендации.
1
2.
Функции ввода-вывода языка C/C++Виды функций ввода-вывода
В языке C и C++ ввод-вывод организуется средствами стандартных библиотек.
• Форматированный ввод-вывод: функции printf и
scanf из стандартной библиотеки C.
• Потоковый ввод-вывод: объекты cin и cout из
библиотеки iostream в C++.
• Специальные функции тоже существуют, но часть
из них платформенно-зависима.
• Например getchar() — стандартная функция чтения
символа;
• _getch() — функция Windows/MSVC из conio.h.
Не все функции работают во всех средах
Важно различать стандартные и нестандартные средства.
getchar() переносим, а _getch() подходит не для всех
компиляторов и ОС.
2
3.
Функции ввода-вывода языка C/C++Функций ввода-вывода
3
4.
Функции ввода-вывода языка C/C++Форматированный вывод: printf()
printf выводит текст и значения по форматной строке.
Примеры
printf("Результат = %.2f\n", x);
printf("a=%d\tb=%d\n", a, b);
printf("символ = %c, строка = %s\n", ch, str);
• Форматная строка может содержать обычный текст,
управляющие последовательности и спецификаторы
формата.
Важно:
• Спецификаторы: %d, %u, %c, %s, %f, %e.
При вызове printf значения float передаются как double из-за
стандартных преобразований аргументов переменной длины.
Поэтому для вывода float и double
в printf обычно используется %f.
• Ширина и точность задаются так: %8.3f.
Особенность
• Для long, short, double, long double применяются
модификаторы: %ld, %hd, %lf, %Lf.
Если число не помещается в указанную ширину поля, оно
всё равно выводится полностью.
Ширина поля не обрезает значение.
4
5.
Функции ввода-вывода языка C/C++Спецификаторы формата
Управляющие символы
\n — перевод строки;
\t — горизонтальная табуляция;
\г — возврат курсора к началу новой
строки;
\а — сигнал-звонок;
\b — возврат на один символ (одну
позицию);
\f — перевод (прогон) страницы;
\v — вертикальная табуляция.
%с — символ;
%s — строка;
%d %i — целое десятичное число (тип int);
%u — целое десятичное число без знака
(тип unsigned);
%f — вещественные числа в форме с
фиксированной точкой;
%е — вещественные числа в форме с
плавающей точкой (с мантиссой и порядком).
hd — для ввода значений типа short int;
ld — для ввода значений типа long int;
lf, le — для ввода значений типа double в форме с
фиксированной и плавающей точкой;
Lf, Le — для ввода значений типа long double в форм
с фиксированной и плавающей точкой.
5
6.
Функции ввода-вывода языка C/C++Форматированный ввод: scanf()
scanf считывает данные из входного потока по заданному формату.
Пример
int n;
float x;
double y;
scanf("%d%f%lf", &n, &x, &y);
• Адрес переменной передаётся с помощью &
(знак получения адреса)
• Для float используется %f, а для double — %lf.
• Функция возвращает количество успешно
считанных значений — это нужно проверять.
• Пробелы, табуляции и перевод строки обычно
считаются разделителями.
Тонкость
Спецификатор %c не пропускает пробельные символы
автоматически. Если нужно пропустить пробелы, часто
пишут " %c" с ведущим пробелом в формате.
Безопасность
Для %s желательно ограничивать ширину, иначе можно
получить переполнение буфера: например, %19s.
6
7.
Функции ввода-вывода языка C/C++Потоковый ввод-вывод в C++: cin и cout
Потоки удобны тем, что тип данных определяется автоматически.
Пример
#include <iostream>
using namespace std;
int a; double b;
cin >> a >> b;
cout << "a = " << a << ", b = " << b << "\n";
• Оператор >> извлекает данные из потока ввода,
оператор << помещает данные в поток вывода.
• Можно объединять несколько операций в одну строку:
cin >> a >> b; cout << a << b;
• Для перевода строки можно использовать \n или endl.
Стиль кода
В современных программах обычно пишут std::cin и
std::cout вместо using namespace std;, чтобы избегать
конфликтов имён.
• Манипулятор endl делает не только перевод строки,
но и принудительный flush буфера.
7
8.
Функции ввода-вывода языка C/C++Форматирование потокового вывода
Для настройки внешнего вида используются флаги, методы и манипуляторы.
8
9.
Функции ввода-вывода языка C/C++Среднее арифметическое трёх чисел
Пример двух вариантов решения одной и той же задачи.
Современный вариант C++
#include <iostream>
#include <iomanip>
double a, b, c;
cin >> a >> b >> c;
double d = (a + b + c) / 3;
cout << fixed << setprecision(2)
<< "Результат = " << d << '\n';
Напоминание
Для fixed и setprecision нужно подключить
заголовок <iomanip>.
9
Программирование