Функция scanf() - функция форматированного ввода. С её помощью вы можете вводить данные со стандартного устройства ввода (клавиатуры). Вводимыми данными могут быть целые числа, числа с плавающей запятой, символы, строки и указатели.
Функция scanf() имеет следующий прототип в файле stdio.h:
int scanf(char *управляющая строка);
Функция возвращает число переменных которым было присвоено значение.
Управляющая строка содержит три вида символов: спецификаторы формата, пробелы и другие символы. Спецификаторы формата начинаются с символа %.
Спецификаторы формата:
%c | чтение символа |
%d | чтение десятичного целого |
%i | чтение десятичного целого |
%e | чтение числа типа float (плавающая запятая) |
%h | чтение short int |
%o | чтение восьмеричного числа |
%s | чтение строки |
%x | чтение шестнадцатеричного числа |
%p | чтение указателя |
%n | чтение указателя в увеличенном формате |
При вводе строки с помощью функции scanf() (спецификатор формата %s), строка вводиться до первого пробела!! т.е. если вы вводите строку "Привет мир!" с использованием функции scanf()
|
|
char str[80]; // массив на 80 символов
scanf("%s",str);
то после ввода результирующая строка, которая будет храниться в массиве str будет состоять из одного слова "Привет". ФУНКЦИЯ ВВОДИТ СТРОКУ ДО ПЕРВОГО ПРОБЕЛА! Если вы хотите вводить строки с пробелами, то используйте функцию
char *gets(char *buf);
С помощью функции gets() вы сможете вводить полноценные строки. Функция gets() читает символы с клавиатуры до появления символа новой строки (\n). Сам символ новой строки появляется, когда вы нажимаете клавишу enter. Функция возвращает указатель на buf. buf - буфер (память) для вводимой строки.
Хотя gets() не входит в тему этой статьи, но всё же давайте напишем пример программы, которая позволяет ввести целую строку с клавиатуры и вывести её на экран.
#include <stdio.h>
void main(void)
{
char buffer[100]; // массив (буфер) для вводимой строки
gets(buffer); // вводим строку и нажимаем enter
printf("%s",buffer); // вывод введённой строки на экран
}
Ещё одно важное замечание! Для ввода данных с помощью функции scanf(), ей в качестве параметров нужно передавать адреса переменных, а не сами переменные. Чтобы получить адрес переменной, нужно поставить перед именем переменной знак &(амперсанд). Знак & означает взятие адреса.
Что значит адрес? Попробую объяснить. В программе у нас есть переменная. Переменная хранит своё значение в памяти компьютера. Так вот адрес, который мы получаем с помощью & это адрес в памяти компьютера где храниться значение переменной.
11) Условный оператор if-else в C++
Если вопрос касается задач разветвляющегося процесса, то здесь необходимо использовать условный оператор if-else. В этой статье вы узнаете, как работает условный оператор if-else в C++ и разберем одну задачу на эту тему.
|
|
Допустим, у нас имеется задача, в которой нужно определить какое из трех чисел введенных с клавиатуры является самым большим? Для решения такой задачи нам как раз таки и понадобится использование условного оператор if-else.
В общем виде этот оператор выглядит так:
Если у нас «условие» является истинным выражением или значением, то выполняется оператор_1 иначе, если у нас «условие» ложно, то выполняется оператор_2.
А если мы хотим задать группу операторов для истинного или ложного условия? Тогда это будет выглядеть так:
При условии если у нас имеется группа операторов, то их мы помещаем в фигурные скобки.
А теперь задачка:
Решение:
Эту задачу можно решать по крайне мере двумя способами. И сейчас я вам о них расскажу.