- •1.1. Элементы Языка си
- •1.1.1. Используемые символы
- •1.1.2. Константы
- •1.1.3. Идентификатор
- •1.1.4. Ключевые слова
- •1.1.5. Использование комментариев в тексте программы
- •1.2. Типы данных и их объявление
- •1.2.1 Категории типов данных
- •1.2.2. Целый тип данных
- •1.2.3. Данные плавающего типа
- •1.2.12. Инициализация данных
- •1.3. Выражения и Операции
- •1.3.1. Выражения
- •1.3.2. Операции
- •1.3.3. Операции унарный минус, отрицание и дополнение
- •1.3.4. Операции разадресации и адреса
- •1.3.5. Операция sizeof
- •1.3.6. Мультипликативные операции
- •1.3.7. Аддитивные операции
- •1.3.8. Логические операции
- •1.3.9. Операция последовательного вычисления
- •1.3.10. Условная операция
- •1.3.11. Операции увеличения и уменьшения
- •1.3.12. Составное присваивание
- •1.3.13. Приведение типов
- •1.3.14. Приоритеты операций и порядок вычислений
- •1.4. Операторы
- •1.4.1. Оператор выражение
- •1.4.2. Пустой оператор
- •1.4.3. Составной оператор
- •Ввод с клавиатуры осуществляется оператором scanf()
- •1.4.4. Оператор if
Ввод с клавиатуры осуществляется оператором scanf()
Структура (синтаксис) обращения к функции:
scanf(строка формата, арг1, арг2, …, аргN);
С помощью данной функции производится ввод с клавиатуры значений переменных, перечисленных в списке аргументов в формате, определенном строкой формата Функция преобразует последовательность вводимых символов в различные формы: целые числа, числа с плавающей точкой и символы.
Особенности функции:
в языке C в строке формата рекомендуется писать только спецификаторы форматов; количество спецификаторов должно быть равно числу аргументов в строке; каждый спецификатор имеет ту же структуру, что и в функции printf();
список аргументов может состоять из одного или нескольких аргументов; разделителем в списке аргументов служит запятая [,];
в качестве аргументов функции используются только адреса переменных.
Задачей аргумента в данной функции является указание адреса ячейки памяти, куда должно быть помещено вводимое значение. Так, символ& обозначает операцию получения адреса переменной, т. е. конструкция &p обеспечивает ввод значения в ячейку памяти, где размещена переменная p.
При использовании функции scanf() необходимо помнить, что при считывании значений для переменных простого типа перед именем переменной ставится символ &;
В качестве примера приведем программу ввода с клавиатуры произвольного символа и воспроизведения на экране монитора как самого символа, так и его кода ASCII:
#include <stdio.h>
int main(void)
{
char t;
printf("\n Input your symbol");
scanf("%c",&t); /* ввести символ и поместить значение в ячейку памяти, где размещена переменная t */
printf("\n Code of your symbol %c is equal %d",t, t);
return 0;
}
При выполнении программы в момент вызова функции scanf() программа приостанавливается в ожидании ввода данных. После ввода пользователем символа с клавиатуры и нажатия клавиши Enter выполнение программы будет продолжено.
Следует отметить, что иногда во время выполнения программы наблюдается пропуск ввода в символьную переменную. Причина такой ошибки – коды символов, оставшиеся в буфере клавиатуры после предыдущего ввода данных, обычно это бывают управляющие коды. В этом случае функция scanf() не останавливает работу программы в ожидании ввода данных, а считывает в символьную переменную код, сохранившийся в буфере клавиатуры после предыдущего ввода.
Чтобы избежать пропуска ввода, следует перед вводом в символьную переменную очистить буфер клавиатуры (входной поток stdin) с помощью функции fflush():
#include <stdio.h>
int main(void)
{
char t,d;
printf("Введите первый символ->");
scanf("%c",&t);
printf ("Введите второй символ->");
fflush(stdin); /* Очистка буфера клавиатуры */
scanf("%c",&d);
printf("Вы ввели: %c %c\n",t,d);
return 0;
}
Используя одну функцию scanf(), можно вводить значения переменных различных типов, например:
int a;
float b;
char t;
scanf ("% d %f %c",&a,&b,&t);
Для ввода числовых значений можно применить следующие строки формата:
int a;
float b,w;
scanf ("%d%f%f",&a,&b,&w);
Если функция scanf() заполняет несколько переменных, при выполнении программы значения могут вводиться либо вместе в одной строке через пробел, либо каждое вводится в отдельной строке, и каждый ввод завершается нажатием клавиши Enter.
