Форматный ввод для стандартных потоков ввода
Вид функцииscanf:
scanf (форматная строка, список аргументов);
В качестве аргументов используются адреса переменных.
Пример 21
scanf(“ %d%f ”, &x,&y);
Пример 22
int i;
float x;
char name[50];
scanf(“%d%f%s”,&i, &x, name);
С входной строкой
25 54.32E-1 Thompson
присвоит 25 – i, 5.432 – x, “Thompson’\0’” – name.
Функция gets описывается в библиотечном файле stdio.h.
Функции atoi, atol, atof (описывается в библиотечном файле stdlib.h) для преобразования строки соответственно в целое, длинное целое или вещественное число.
Пример 23 Пример, иллюстрирующий ввод-вывод.
int main()
{
SetConsoleOutputCP(1251); //функция для вывода текста кириллицей
char name[80], ageStr[80];
int age=0;
printf("Пожалуйста введите Ваше имя:");
gets(name);
printf("Привет, %s! Сколько Вам лет?", name);
gets(ageStr);
age=atoi(ageStr);
if (age>0 && age<=30) printf(" %s! Да Вам всего лишь %d лет?", name,age);
else printf(" %s! Вы большой молодец?", name);
getch();
return 0;
}
Будет выведено:
Пожалуйста введите Ваше имя: Иван
Привет, Иван! Сколько Вам лет? 25
Иван! Да Вам всего лишь 25 лет?
Операторы ввода – вывода C++
При использовании библиотеки классов C++, используется библиотечный файл iostream, в котором определены стандартные потоки ввода данных от клавиатуры cin и вывода данных на экран дисплея cout, а также соответствующие операции:
1) << – операция записи данных в поток;
2) >>– операция чтения данных из потока.
Операторы ввода (>>) и вывода (<<) не являются встроенными для языка C++, а обеспечиваются стандартной библиотекой с помощью потоков ввода – вывода. При запуске программы на выполнение автоматически открываются три стандартных потока языка C++:
cin – стандартный поток ввода (с клавиатуры);
cout– стандартный поток вывода (на дисплей);
cerr – стандартный поток для выдачи сообщений (на дисплей). Вместо потока cout для вывода сообщений об ошибках может использоваться поток cerr.
Для выполнения операторов потокового ввода – вывода в программу должна быть включена инструкция препроцессора:
#include <iostream> // подключить файл, где объявлены cin и cout
Для возможности использования кириллицы в программу должна быть включена инструкция препроцессора:
#include <windows.h>// файл, где определена функция SetConsoleOutputCP(1251)
или
#include <clocale> // файл, где определена функция setlocale(LC_CTYPE,"rus")
Пример 24. Следующая функция считывает набранное на клавиатуре целое число (например, 4321) и помещает его в переменную i, затем вводит в переменную d число с плавающей точкой (например, 12.34E5), после чего считывает набранную на клавиатуре строку символов (например, имя “Валентин”).
void f()
{
int i;
double d;
char name[20];
cin >> i; // считывание в i целого числа
cin >> d; // считывание в d числа с плавающей точкой удвоенной
// точности
cin >> name; // считывание в массив name строки символов
}
Три последние инструкции приведенной выше функции, если не учитывать комментарии, можно заменить одной строкой:
cin >> i >> d >> name;
При вводе данных нет необходимости ставить перед именами переменных оператор взятия адреса &. Оператор ввода >> берёт на себя задачу вычисления адреса, определение формата вводимых данных, преобразование символьного представления информации в двоичное.
Например:
void f()
{
cout << 10;
}
Эта функция поместит символ 1, а затем символ 0 в стандартный поток вывода, т. е. на экран в строку, на которую указывает курсор.
Можно выводить значения различных типов, например:
Пример 25. Вывод значений различных типов:
void h(int i)
{
cout << “Значение i равно “; // вывод текста
cout << i; // вывод целого
cout << ‘\n’; // помещает в выходной поток один символ – //переход на новую строку
}
Три последние инструкции приведенной выше функции, если не учитывать комментарии, можно заменить одной строкой:
cout << “Значение i равно “<< i<< ‘\n’;
При выводе отдельных символов каждый символ должен заключаться в одиночные кавычки в отличие от вывода строк символов, когда выводимая строка заключается в двойные кавычки.
Пример 18. Совместное использование операторов ввода и вывода:
#include "stdafx.h"
#include <iostream> // подключить файл, где объявлены cin и cout
#include <conio.h> // файл, где определена функция getch()
#include <windows.h>// файл, где определена функция SetConsoleOutputCP(1251);
using namespace std;
void main()
{
SetConsoleOutputCP(1251); //функция для вывода текста кириллицей
char name[20];
cout << "Пожалуйста, введите Ваше имя.\n";
cin >> name;
cout << "Привет, " << name << "!\n";
getch(); // ждать нажатия любой клавиши
}